我正在尝试编写一个测试,根据从API收到的响应来检查我的应用的行为。为此,我正在尝试对我所提出的请求做出响应,以获得我需要的配置。
一个示例是在登录后检查我的应用程序是否重定向到主页。我需要响应为HTTP 200并且具有API密钥的任何值。
我正在使用axios发出请求
目前我尝试了以下图书馆但没有成功
有没有人有模拟远程HTTP请求及其响应的经验?
编辑:如果有帮助,我使用Mocha和Chai进行测试
it('Does stuff', function () {
moxios.stubRequest('/auth/get_api_key', {
status: 200,
responseText: 'hello'
})
return this.app.client.setValue('[name="username"]', 'testing').then(() => {
return this.app.client.setValue('[name="password"]', 'testing').then(() => {
return this.app.client.submitForm('#login-form').then(() => {
return this.app.client.getRenderProcessLogs().then(function (logs) {
console.log(logs)
})
})
})
})
})
上面的代码是我用来查看请求是否通过并输出此
的代码[{level:'SEVERE', 消息:'http://127.0.0.1:8000/auth/get_api_key/ - 无法加载资源:net :: ERR_CONNECTION_REFUSED', 来源:'网络', 时间戳:1510082077495}]
答案 0 :(得分:0)
我的例子主要来自moxios docs。
首先在测试中导入所需的库。之后,您将在beforeEach
和afterEach
挂钩中处理创建和销毁模拟axios服务器的问题。然后,您将sinon.spy()
传递给axios'得到你想要监视的请求。
此获取请求将由moxios进行模拟,您可以通过moxios.wait(() => { moxios.request.mostRecent(); });
访问它。在wait()
方法中,您可以在最近的请求中设置所需的响应。
之后,就像您使用axios时一样,您将使用then()
功能来获取您的回复。在then()
内,您可以为该特定响应创建测试。完成规范后,请致电done();
以关闭请求并移动规范。
import axios from 'axios';
import moxios from 'moxios';
import sinon from 'sinon';
import { equal } from 'assert'; //use the testing framework of your choice
beforeEach(() => {
moxios.install();
});
afterEach(() => {
moxios.uninstall();
});
it('Does stuff', (done) => {
moxios.withMock(() => {
let onFulfilled = sinon.spy();
axios.get('/auth/get_api_key').then(onFulfilled);
moxios.wait(() => {
let request = moxios.requests.mostRecent();
request.respondWith({
status: 200,
response: {
apiKey: 1234567890
}
}).then((res) => {
equal(onFulfilled.called, true);
equal(res.status, 200);
equal(res.response.apiKey, 1234567890);
done();
})
})
})
});