2016-05-26 6 views
1

は、私がこれを行う機能を持っていると仮定します。ジャスミンテストは、「類似の」オブジェクトで呼び出されましたか?

var createDeferredAction = function (args) { 
    var deferral = $q.defer(); 

    var action = { 
     args: args 
     deferral: deferral; 
    }; 

    $scope.$emit('load-module', action); 

    return deferral.promise; 
} 

その後、私のテストでは、私のようなので、何かをしたい:ジャスミンはそのexpectedオブジェクトを検査するとき、私は「ドン、ある

myService.createDeferredAction({foo: 'bar'}); 

var expected = { 
    args: {foo: 'bar'}, 
    deferral: jasmine.anySimilar($q.defer()) 
} 

expect($scopeSpy.$emit).toHaveBeenCalledWith('load-module', expected); 

遅延の正確なインスタンスを試してみるために、署名に一致するオブジェクトが渡されたことを確認したいだけです。例えば、 任意延期のインスタンス。

私は$q.defer()を嘲笑して、私が期待して使うことができる既知の価値を返すことができると知っていますが、私はむしろ嘲笑する必要はありません。$q.defer()

ジャスミンでこのようなことが可能ですか?

ジャスミン2でのようなもの、私はそれをテストしていませんが、私はあなたがメソッド呼び出しから引数を取得することによってこれを実現して、あなたが興味を持っている性質のちょうど種類を確認することができると思うので、

答えて

0

expect($scopeSpy.$emit.calls.argsFor(1).deferral).toEqual(jasmine.any(Deferred)); 
を。

またはジャスミン1.3

expect($scopeSpy.$emit.calls[0].args[1].deferral).toEqual(jasmine.any(Deferred)); 
関連する問題