![](/img/trans.png)
[英]Having trouble in writing a unit test for addEventListener in jest
[英]Writing JEST unit test for a simple function
基本上這是我的反應代碼
getDetails: function () {
var apiUrl = ConfigStore.get('api')
request
.get(apiUrl)
.set('X-Auth-Token', AuthStore.jwt)
.set('Accept', 'application/json')
.end(function (err, response) {
if (!err) {
if(response.text.indexOf("string") > -1){
this.dispatch('COMMAND1', response);
}
else {
this.dispatch('COMMAND2', response.body.options);
}
}
else {
this.dispatch('COMMAND3', response && response.body);
}
}.bind(this));
}
我已經為COMMAND1
的上述功能編寫了單元測試
it('Getting Latest Details', () => {
let eventSpy = sinon.spy();
require('superagent').__setMockResponse({
body: {
firstName: 'blah',
lastName: 'm ',
username: 'blah',
text: {
text : jest.fn()
}
}
});
let dispatchListener = AppDispatcher.register((payload) => {
if (payload.action.type === 'COMMAND1') {
eventSpy(payload.action.payload);
}
});
AuthStore.loggedIn = jest.genMockFunction().mockReturnValue(true);
AuthStore.getToken = jest.genMockFunction().mockReturnValue('545r5e45er4e5r.erereere');
MedsAlertsActions.getDetails();
expect(eventSpy.called).toBe(true);
dispatch('COMMAND1', data);
AppDispatcher.unregister(dispatchListener);
});
當我跑步
npm test myfile.test
我越來越
TypeError: Cannot read property 'indexOf' of undefined
indexOf
響應放入我的body
? 如何解決類型錯誤 command2
和command3
編寫測試用例。 我可以看到您正在使用sinon 。 您可以在其中創建一個沙箱和一個假服務器,以返回每個測試用例的預期響應。 這樣的事情,例如:
describe('your test suite', () => {
let sandbox;
let server;
beforeAll(() => {
sandbox = sinon.sandbox.create();
server = sandbox.useFakeServer();
});
it('Calls COMMAND1', () => {
//Sinon takes some ms to respond, so you have to use a setTimeout
setTimeout(
() => server.respond([200, { 'Content-Type': 'text/html' }, 'some string']),
0
);
// Put here your assertions
});
});
您可以在需要時使用server.restore()
和sandbox.restore()
清理每一個。 此外,您可以訪問用sandbox.requests
發出的請求
這是一篇很棒的文章,可能會對您有所幫助: https ://medium.com/@srph/axios-easily-test-requests-f04caf49e057,它是關於axios的,但是您可以用相同的方式實現它。
另外,您可以在沙盒的官方sinon文檔中了解有關它的更多信息: http ://sinonjs.org/releases/v1.17.7/sandbox
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.