5
私はクラスAProvider
があり、'./b.provider'
が必要です。私の要求されたクラスをスタブしていないプロクシーク
const BProvider = require('./b.provider');
class AProvider {
static get defaultPath() {
return `defaults/a/${BProvider.getThing()}`;
}
}
module.exports = AProvider;
b.provider.js
a.provider.js
に隣接しており、
./b.provider
をモックとし
proxyquire
を使用して私のテストで
global.stuff.whatever = require('../models').get('Whatever'); // I didn't write this!
class BProvider {
static getThing() {
return 'some-computed-thing';
}
}
module.exports = BProvider;
次のようになります。
import { expect } from 'chai';
import proxyquire from 'proxyquire';
describe('A Provider',() => {
const Provider = proxyquire('../src/a.provider', {
'./b.provider': {
getThing:() => 'b-thing'
},
});
describe('defaultPath',() => {
it('has the expected value',() => {
expect(Provider.defaultPath).to.equal('defaults/a/b-thing')
});
});
});
私はテストBProvider
を実行するときしかし、さまだ実際の'./b.provider'
はスタブではなく、BProviderの参照はですがエラーを投げています。
なぜこれが機能しないのですか?
proxyquire
はまだそれをスタブする前に基本的なコードを必要とし、次のようにこれが起こっている理由として
'before'ステートメントでproxyquireディレクティブを宣言しようとしましたか?また、これが助けになるかどうかわからないが、この記事では、それと同時にsinonを使うと思うようだ。http://www.thoughtdelimited.org/thoughts/post.cfm/instructing-proxyquire-to-ignore-nested-requires –
興味深いリンク。私は依頼が依頼されたにもかかわらず依然として起こったことを知らなかった。今タクシーでは、私が家に帰るときに解決策をテストします。ありがとう。 –
さて、私は問題を解決して、私が以下に掲載する簡単な解決策を見つけました。正しい方向に私を指してくれてありがとう@ francisco.preller。 –