Javascript 西农间谍从未被称为间谍
我正在测试一个方法a,它根据条件使用不同的参数调用另一个方法B。所以我想监视B以便检查它是否被调用。但间谍永远不会被召唤Javascript 西农间谍从未被称为间谍,javascript,reactjs,sinon,spy,Javascript,Reactjs,Sinon,Spy,我正在测试一个方法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(s
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;
})
})
B从哪里来,它是模块的内部,它来自另一个模块?A和B都来自父级
这似乎是最好的主意。谢谢