gpt4 book ai didi

javascript - 如何将Sinon.js FakeXMLHttpRequest与superagent一起使用?

转载 作者:行者123 更新时间:2023-12-03 09:58:44 24 4
gpt4 key购买 nike

我正在尝试测试向服务器发出请求的 React Flux 操作之一。

// AppActions.js
fetchMovies(date) {
this.dispatch(date);
request
.get('/api/movies')
.query(date)
.end((err, res) => {
if (!res.ok) {
this.actions.fetchMoviesFail(res.body);
} else {
this.actions.fetchMoviesSuccess(res.body);
}
});
}

在我的 Flux 商店测试中,我有如下内容:

  // AppStore-test.js
it ('should successfully handle fetchMovies', () => {
var callback = sinon.spy();
var date = {
startDate: moment('2015-04-01').format('YYYY-MM-DD'),
endDate: moment('2015-04-15').format('YYYY-MM-DD')
};

AppActions.fetchMovies(date, callback);

requests[0].respond(200, { 'Content-Type': 'application/json' },
'[{ "id": 12, "comment": "Hey there" }]');

expect(callback.calledWith([{id: 12, comment: "Hey there"}])).to.be.ok;
});

这显然行不通,因为 fetchMovies 仅接受一个参数 - date。这是我第一次使用sinon.js ,所以也许我错过了一些非常明显的东西?

我如何伪造这个异步请求并使其成功或失败,因为现在无论我做什么,它都永远不会解决 .end() promise 。

最佳答案

您应该使用nock为此。

Nock 拦截来自您代码的所有 HTTP 请求,然后根据您的设置方式进行响应。通过这种方式,您可以将模拟和 spy 事件降至最低限度,并将请求视为另一个实现细节。

您创建的 nock 范围会响应某些断言,因此您可以预期它已完成、错误或类似。

一个例子;

var nockScope = nock('http://localhost:8000').get('/api/movies').reply(200, 'OK')

expect(nockScope.isDone()).to.be.ok()

关于javascript - 如何将Sinon.js FakeXMLHttpRequest与superagent一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30653031/

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