我试图在我的单元测试中使用 chai 间谍。我正在使用 karma、mocha、chai 和 sinon。
我最初试图使用 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();
});
}
第一个“应该是间谍”测试通过了,据我所知,这意味着实际上正在创建一个间谍。但是,第二次测试失败并出现以下错误:
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;
我很乐意提供所需的任何其他信息。谢谢!