3

次のテストケースがあります。

it('should return id if the post is successful',function(){
       var result = {
               id : "123"
       };
        ctrl.saveCallback(result);
        expect(ctrl.method.id).to.equal("123");
    });

ctrl.saveCallbackを にコピーするresult.idと、成功バナーが表示さmethod.idれます。ctrl成功バナーでは、translateフィルタを使用してメッセージを表示する前に翻訳しています。

関数:

.....
ctrl.method.id = result.id;
magicallyShowOnScreen($filter('translate')('MESSAGES.SUCCESS'));
....

magicallyShowOnScreen画面に渡された文字列を表示するサービスで、beforeEach に挿入されています。

これをどのようにテストまたはモックアウトする必要があるかについて、誰かが正しい方向に向けることができますか$filter('translate')?

4

1 に答える 1

1

序文: 私は Mocha.js やスパイの作成方法に精通していませんが、他のテスト フレームワークの場合と同じ方法でスパイや類似のモック オブジェクトを注入します。

以下はジャスミンの例です。お役に立てば幸いです。


module( /を使用して) モジュールをブートストラップするときは、別のモック / スパイを返すモック / スパイであるangular.mocks.module独自のバージョンを提供する必要があります。$filter例えば

var $filter, filterFn;
beforeEach(module('myModule', function($provide) {
    $filter = jasmine.createSpy('$filter');
    filterFn = jasmine.createSpy('filterFn');
    $filter.and.returnValue(filterFn);

    $provide.value('$filter', $filter);
});

次に、テストで、が$filter正しい引数で呼び出されていることを確認できます。

expect($filter).toHaveBeenCalledWith('translate');
expect(filterFn).toHaveBeenCalledWith('MESSAGE.SUCCESS');
expect(magicallyShowOnScreen).toHaveBeenCalled(); // assuming this too is a spy
于 2015-05-20T04:59:55.330 に答える