Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 西农间谍从未被称为间谍_Javascript_Reactjs_Sinon_Spy - Fatal编程技术网

Javascript 西农间谍从未被称为间谍

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

我正在测试一个方法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;
  })
})

B从哪里来,它是模块的内部,它来自另一个模块?A和B都来自父级
这似乎是最好的主意。谢谢