2
私はSinonにとって少し新しく、関数だけでなくその関数によって返された関数を偵察する必要があるシナリオにいくつかの問題を抱えています。具体的には、Azure Storage SDKを模擬して、キューサービスを作成したら、そのキューサービスから返されたメソッドも呼び出されるようにしています。ここで 関数sinonによって返された関数を詮索している
// test.js
// Setup a Sinon sandbox for each test
test.beforeEach(async t => {
sandbox = Sinon.sandbox.create();
});
// Restore the sandbox after each test
test.afterEach(async t => {
sandbox.restore();
});
test.only('creates a message in the queue for the payment summary email', async t => {
// Create a spy on the mock
const queueServiceSpy = sandbox.spy(AzureStorageMock, 'createQueueService');
// Replace the library with the mock
const EmailUtil = Proxyquire('../../lib/email', {
'azure-storage': AzureStorageMock,
'@noCallThru': true
});
await EmailUtil.sendBusinessPaymentSummary();
// Expect that the `createQueueService` method was called
t.true(queueServiceSpy.calledOnce); // true
// Expect that the `createMessage` method returned by
// `createQueueService` is called
t.true(queueServiceSpy.createMessage.calledOnce); // undefined
});
モックです:ここでは例です、私は
queueServiceSpy
が一度呼び出されていることを確認することができるよ
const Sinon = require('sinon');
module.exports = {
createQueueService:() => {
return {
createQueueIfNotExists: (queueName) => {
return Promise.resolve(Sinon.spy());
},
createMessage: (queueName, message) => {
return Promise.resolve(Sinon.spy());
}
};
}
};
が、そのメソッドによって返される方法がある場合、私は決定問題を抱えています(createMessage
)と呼ばれます。
これを設定するより良い方法はありますか、それとも私は何か不足していますか?
ありがとうございます!