2016-11-18 4 views
0

私のテストで関数がまだ呼び出されているかどうかを調べようとしています。これを行うときにエラーTypeError: Cannot read property 'match' of undefinedが表示されます。私は自分の機能にsinon.spy()を使用するように自分のコードを設定し、これに基づいてcallCountをチェックします。 getMarketLabel常に文字列を返します。以下は私のコードです:あなたのコードで関数がエラーと呼ばれているかどうかチェックするsinon spy

beforeEach(() => { 
    marketLabelSpy = sinon.spy(getMarketLabel()); 
}); //please note this is in a describe block but didnt feel it was relevant to post it. marketLabelSpy is pre-defined. 

it('should be called',() => { 
    expect(marketLabelSpy).to.have.callCount(1); 
}) 
+0

getMarketLabel()が何を返すのでしょうか?サイオンスパイを添付するには、sinon.spy(func)またはsinon.spy(object、 "method")を実行するか、関数自体としてsinon.spy()を使用する必要があります。 – DevDig

+0

は元の投稿を編集しました。 'getMarketLabel'は常に' string'を返します – DaveDavidson

+0

私はこれが理にかなっているとは思わない、sinonスパイを使う方法を見てください:http://sinonjs.org/docs/#spies、文字列をとるsinon.spyメソッドはありません。 – DevDig

答えて

1

、あなたはgetMarketLabel関数を呼び出していると、(文字列です)関数呼び出しの結果は、あなたのスパイを設定するために使用されます。それはあなたが意図したとおりに動作しません。単にその関数への参照を渡す機能にsinonスパイを使用するには

beforeEach(() => { 
    marketLabelSpy = sinon.spy(getMarketLabel); 
}); 
+0

これは一歩近づいていますが、0回呼び出されたためテストは合格しません。それを呼び出すには、関数を文字列に渡す必要があります。 – DaveDavidson

+0

'getMarketLabel(); expect(marketLabelSpy).to.have.callCount(1); ' – DevDig

+0

@DevDigはスパイを呼び出さず、元の関数を呼び出します。 – robertklep

関連する問題