在测试中使用模拟 ajax 调用的目的是什么?
What is the purpose of using a mock ajax call in testing?
我正在学习 TDD React here,但不了解以下测试情况:
it('Correctly updates the state after AJAX call in `componentDidMount` was made', (done) => {
nock('https://api.github.com')
.get('/users')
.reply(200, [
{ 'name': 'Reign', 'age': 26 }
]);
// Overwrite, so we can correctly reason about the count number
// Don't want shared state
wrapper = mount(<UsersListComponent />);
setTimeout(function() {
expect(wrapper.state().usersList).to.be.instanceof(Array);
expect(wrapper.state().usersList.length).to.equal(1);
expect(wrapper.state().usersList[0].name).to.equal('Reign');
expect(wrapper.state().usersList[0].age).to.equal(26);
nock.cleanAll();
done();
}, 1500);
});
使用nock
伪造请求的目的是什么?此请求不执行任何操作,我不确定响应的去向。我认为 TDD 方法是编写测试(代码从包装器开始),看到它失败,然后在实际组件中使用真正的 ajax 调用来测试。我不明白 nock 在这里做什么。
您代码中 nock
调用的目的是伪造 API 请求。 Nock 捕获/拦截呼叫,而不是实际响应 returns 带有虚假信息的响应。
测试的标题是Correctly updates the state after AJAX call...
所以目的是测试状态是否正确更新,而不是实际的API请求是否已经成功执行。
这允许您对不同的场景进行建模和测试,例如,您的应用在接收不同数据集时的行为方式。它还允许您在实际 API 可能尚未准备好时完成测试。
单元测试的目的是仅以最独立的方式测试您的代码。伪造 AJAX 请求并获得其响应是一种非常常见的做法,可以避免您的端点出现问题(因为这不是您要测试的内容)并专注于处理该端点响应的代码,您可以选择不同的响应模型来测试不同的场景。
当您调用“https://api.github.com/users”时,Nock 只会将响应反馈给您的组件
我正在学习 TDD React here,但不了解以下测试情况:
it('Correctly updates the state after AJAX call in `componentDidMount` was made', (done) => {
nock('https://api.github.com')
.get('/users')
.reply(200, [
{ 'name': 'Reign', 'age': 26 }
]);
// Overwrite, so we can correctly reason about the count number
// Don't want shared state
wrapper = mount(<UsersListComponent />);
setTimeout(function() {
expect(wrapper.state().usersList).to.be.instanceof(Array);
expect(wrapper.state().usersList.length).to.equal(1);
expect(wrapper.state().usersList[0].name).to.equal('Reign');
expect(wrapper.state().usersList[0].age).to.equal(26);
nock.cleanAll();
done();
}, 1500);
});
使用nock
伪造请求的目的是什么?此请求不执行任何操作,我不确定响应的去向。我认为 TDD 方法是编写测试(代码从包装器开始),看到它失败,然后在实际组件中使用真正的 ajax 调用来测试。我不明白 nock 在这里做什么。
您代码中 nock
调用的目的是伪造 API 请求。 Nock 捕获/拦截呼叫,而不是实际响应 returns 带有虚假信息的响应。
测试的标题是Correctly updates the state after AJAX call...
所以目的是测试状态是否正确更新,而不是实际的API请求是否已经成功执行。
这允许您对不同的场景进行建模和测试,例如,您的应用在接收不同数据集时的行为方式。它还允许您在实际 API 可能尚未准备好时完成测试。
单元测试的目的是仅以最独立的方式测试您的代码。伪造 AJAX 请求并获得其响应是一种非常常见的做法,可以避免您的端点出现问题(因为这不是您要测试的内容)并专注于处理该端点响应的代码,您可以选择不同的响应模型来测试不同的场景。
当您调用“https://api.github.com/users”时,Nock 只会将响应反馈给您的组件