gpt4 book ai didi

javascript - 为简单函数编写 JEST 单元测试

转载 作者:行者123 更新时间:2023-12-03 03:00:35 25 4
gpt4 key购买 nike

基本上这是我的 react 代码

    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
  1. 那么如何将 indexOf 响应放入我的 body 中?如何解决类型错误
  2. 如何为 command2command3 编写测试用例。

最佳答案

我可以看到您正在使用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

关于javascript - 为简单函数编写 JEST 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47406802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com