0
我在做什麼:運行一個測試,用supertest模塊命中其餘接口,並存儲一些導入到那裏的函數。如何在使用nodejs和babel進行集成測試時在導入的模塊中存根功能
的設置是這樣的:
node.js的
babel-plugin-rewire模塊
sinonjs
摩卡
文件:
app.js
import * as emailService from './services/emailService';
router.get('/sendEmail',function(req,res,next) {
emailService.send('subject');
});
test.js
import supertest from 'supertest';
import app from '../js/app';
import * as emailService from '../js/services/emailService';
import { __RewireAPI__ as emailRewire } from '../js/services/emailService';
it.only('rewiring test', async function() {
const sendStub = sinon.stub(emailService,'send',function() {
console.log('stubbed');
});
emailRewire.__Rewire__('send',sendStub);
await supertest(app)
.get('/sendEmail')
.expect(200);
});
以上不會在控制檯預期打印 「存根」。
嘗試過,但它不工作。首先,sendStub不是對象的完整模擬,但也有其他事情必須進行 – arisalexis
正確的是,您必須將對象傳遞給具有「發送」屬性的registerMock。更新了代碼示例。 –
謝謝你,但仍然無法正常工作。應用程序有一個原始的電子郵件服務,我不知道爲什麼/如何 – arisalexis