【发布时间】:2017-02-13 04:09:05
【问题描述】:
我正在尝试对文件中的一个函数进行单元测试,同时对 SAME 文件中的另一个函数进行存根,但没有应用模拟,而是调用了真正的方法。这是一个例子:
// file: 'foo.js'
export function a() {
// .....
}
export function b() {
let stuff = a(); // call a
// ...do stuff
}
我的测试:
import * as actions from 'foo';
const aStub = sinon.stub(actions, 'a').returns('mocked return');
actions.b(); // b() is executed, which calls a() instead of the expected aStub()
【问题讨论】:
-
作为一般经验法则,您不应该在您正在测试的同一模块中存根/模拟函数。如果您发现需要这样做,这很好地表明这两个函数实际上应该位于不同的模块中。当然,虽然规则是被打破的,在某些情况下这可能是可以的,但总的来说,你应该避免。
-
@AndrewEisenberg 我目前处于这种情况,并且看到在我正在测试的同一个模块中模拟一个函数仍然有点困难。您能否详细说明为什么我应该将这两个函数拆分为单独的模块?
标签: javascript unit-testing reactjs redux sinon