【发布时间】:2016-03-02 17:10:30
【问题描述】:
我无法找到一种方法来存根从定义该函数的同一模块中调用的函数(存根似乎不起作用)。这是一个例子:
myModule.js:
'use strict'
function foo () {
return 'foo'
}
exports.foo = foo
function bar () {
return foo()
}
exports.bar = bar
myModule.test.js:
'use strict'
const chai = require('chai')
const sinon = require('sinon')
chai.should()
const myModule = require('./myModule')
describe('myModule', () => {
describe('bar', () => {
it('should return foo', () => {
myModule.bar().should.equal('foo') // succeeds
})
describe('when stubbed', () => {
before(() => {
sinon.stub(myModule, 'foo').returns('foo2') // this stub seems ignored
})
it('should return foo2', () => {
myModule.bar().should.equal('foo2') // fails
})
})
})
})
这让我想起了(几乎)不可存根的 Java 静态函数。
知道如何实现我想要做的事情吗?我知道在不同的模块中提取foo 会起作用,但这不是我在这里想要做的。我也知道在 bar 方法中使用关键字 this 调用 foo 也可以,我对在这种情况下使用 ̀this 感到困惑(因为我没有使用 OOP) .
【问题讨论】:
标签: node.js