単体テストで chai スパイを使用しようとしています。私はカルマ、モカ、チャイ、シノンを使用しています。
私はもともと chai スパイを使用して、Angular アプリのコールバックが提供されたときに呼び出されたことを確認しようとしていました。しかし、エラーを解決するために、テスト ケースを非常に単純なものにまで煮詰めました。
以下の単体テストがあります
describe('spy tests:', function() {
it('should be spy', function() {
var spy = chai.spy();
expect(spy).to.be.spy;
});
it('should have been called', function() {
var spy = chai.spy();
spy();
expect(spy).to.have.been.called();
});
}
最初の「スパイであるべき」テストに合格しました。これは、私が推論できる限り、スパイが実際に作成されていることを意味します。ただし、2 番目のテストは次のエラーで失敗します。
TypeError: { [Function]
toString: { [Function: toString] bind: { [Function: bind] bind: [Circular] } },
reset: { [Function] bind: { [Function: bind] bind: [Circular] } },
__spy: { calls: [ [] ], called: true, name: undefined },
bind: { [Function: bind] bind: [Circular] } } is not a spy or a call to a spy!
以前の「スパイであるべき」の主張でスパイであることを確認したばかりなので、これは特にイライラします。
以下は、私の karma.conf.js に含めているフレームワークです。
frameworks: ['chai-as-promised', 'chai-things', 'chai-spies', 'sinon-chai', 'chai', 'mocha']
問題をさらにイライラさせるために、以下のアサーションは合格します。
expect(spy.__spy.called).to.be.true;
他に必要な情報がありましたら、喜んで提供いたします。ありがとう!