1
私のテスト対象の関数はおおよそ次のようになります。チャイとスロンを使ったメソッドの中で約束を外す
function doThing(data, callback) {
externalService.post('send').request(data)
.then(() => {
if (callback) { callback(); }
})
.catch((message) => {
logger.warn('warning message');
if (callback) { callback(); }
});
}
私はチャイとシノンを使ってこれをテストしようとしています。
私はさまざまなガイドに従って試しましたが、私の現在の呪文は次のようになります。
const thingBeingTested = require('thing-being-tested');
const chai = require('chai');
const sinon = require('sinon');
require('sinon-as-promised');
const sinonChai = require('sinon-chai');
const expect = chai.expect;
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
chai.use(sinonChai);
describe('The Thing',() => {
it('should run a callback when requested and successful', done => {
const externalService = { post: { request: sinon.stub() } };
const callback = sinon.spy();
externalService.post.request.resolves(callback);
doThing({...}, callback);
expect(callback).to.have.been.called;
done();
});
});
私はを正しくスタブアウトできません。どんな助けでも大歓迎です。
私は完全にチャイとシノンに新しいです - 完全に何か愚かなことをすることを期待しています。
ことにより、元の
post
を復元することを忘れないでください、あなたは、プロキシのnodejsが必要であること、[proxyquire](https://github.com/thlorenz/proxyquire)を使用して考えがありますテスト中に依存関係を上書きできるようにするには? 'nodejs'でテストするときに使う便利なツールで、私の意見ではテストを簡単にします。 – hyprstackありがとう@hyprstack - 私はそれを聞いたことがない。私はこのユースケース(私の例では私は1つのテストを持っていましたが、もちろん、実行する必要があるいくつかの他のものがあります)に意味があるかどうかを見てみましょう。 – Toby