この関数が定義されている同じモジュール内から呼び出された関数をスタブする方法を見つけられません(スタブは機能していないようです)。ここでは例を示します。同じモジュールから呼び出されたスタブモジュール関数
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
})
})
})
})
これは(ほとんど)stubbableではありませんJavaの静的な機能のことを思い出します。
どのように私がやろうとしていることを達成するためのアイデア?私は別のモジュールでfoo
を抽出することができますが、それは私がここでやろうとしていることではありません。私はまた、メソッドでthis
というキーワードを使用してfoo
を呼び出すことも可能であることを認識しています。このコンテキストでthis
の使用に困惑しています(OOPを使用していないため)。
すばらしい、ありがとう。これは 'this'と同じ仕事をしているが、それはやるだろうから、' exports'を使うのは少し醜いです。静的コンテキストで 'this'を使用すると、私の心は少しばかり動揺しました。 – Simon
あなたは私の友人を大歓迎しています! –
ソースコードを変更できない場合はどうすればよいですか? – nbkhope