2016-04-04 12 views
1

私はjavascriptで書かれたメソッドを持っていますが、メソッドをテストするためにJasmineを使用しています。 このメソッドは、別のメソッドを呼び出すvoid型です。void method testing javascript

メソッドが他のメソッドを呼び出すかどうかをテストする必要がありますが、現在のメソッドはvoidを返しています。

これを比較するには、expect句に何を書きますか。

sendMessage=function(data){ 
if(data!=null) 
{ 
    postMessage(data); 
} 
} 

ジャスミンコード:

describe('unit test void method', function(){ 
    it("sendMessage method should invoke the postMessage", function() { 
      expect(sendMessage("hello"); 
    }) 
}) 

私はそれを比較すべきか?

expect(obj.method.calls.any()).toBe(true); 
+0

:Dサンプルは、より有用であろう。 –

+0

voidメソッドを使用して、オブジェクトに何かを行う(状態を変更する)か、応答を期待せずにnotifactionを発行するように要求する必要があります。前者の場合は、関数が実行された後でターゲットオブジェクトに何らかの変更が加えられたことを確認できます。それが後者の情報方法の場合は、テストできるものに実際には影響しないので、通常は単体テストではありません。それが他のものであれば、正しくvoidを使用していますか? – Vistari

答えて

0

が鳴ります。それはスパイ関数ですが、別のアプローチを使用しています。セットアップbeforeEach機能のどこかに

spyOn(YourObject, 'postMessage').and.callThrough(); 

YourObject機能が含まれているものは何でも対象となります。

期待:

it('expects postMessage() to have been called', function() { 

    // make the call to this function 
    YourObject.sendMessage(); 

    // Check internal function 
    expect(YourObject.postMessage).toHaveBeenCalled(); 
}); 
0

ジェームズは右である:あなたはメソッドが呼び出されたときに、どのように頻繁に追跡するJasmine spiesを使用するように