从未被称为 Sinon Spy
Sinon Spy is never called
我正在测试一个方法 A,它根据条件用不同的参数调用另一个方法 B。所以我想监视 B 以便我可以检查它是否被调用。但是间谍永远不会被召唤。
import parent from '../something.js'
describe('Testing A', () => {
it('should make proper calls to B', () => {
var spy = sinon.spy(parent, 'B')
parent.A()
expect(spy.calledOnce).to.be.true
})
})
测试函数 A 就是
export const A = () => {
B()
}
似乎在测试中,从未调用过B的间谍版本,因为A直接调用了B。如何让A的测试函数调用B的Sinon版本?
对我来说,您的代码不可测试。您应该将被测模块视为黑盒,而不是尝试调整其内部结构。在您的情况下,您正试图监视 something.js 模块内部的方法。
将 B 作为参数传递给 A:
export const A = (B) => {
B();
}
在那种情况下它是非常容易测试的回调:
import parent from '../something.js'
describe('Testing A', () => {
it('should make proper calls to B', () => {
var B = sinon.spy();
parent.A(B);
expect(B.calledOnce).to.be.true;
})
})
我正在测试一个方法 A,它根据条件用不同的参数调用另一个方法 B。所以我想监视 B 以便我可以检查它是否被调用。但是间谍永远不会被召唤。
import parent from '../something.js'
describe('Testing A', () => {
it('should make proper calls to B', () => {
var spy = sinon.spy(parent, 'B')
parent.A()
expect(spy.calledOnce).to.be.true
})
})
测试函数 A 就是
export const A = () => {
B()
}
似乎在测试中,从未调用过B的间谍版本,因为A直接调用了B。如何让A的测试函数调用B的Sinon版本?
对我来说,您的代码不可测试。您应该将被测模块视为黑盒,而不是尝试调整其内部结构。在您的情况下,您正试图监视 something.js 模块内部的方法。
将 B 作为参数传递给 A:
export const A = (B) => {
B();
}
在那种情况下它是非常容易测试的回调:
import parent from '../something.js'
describe('Testing A', () => {
it('should make proper calls to B', () => {
var B = sinon.spy();
parent.A(B);
expect(B.calledOnce).to.be.true;
})
})