将函数结果与 Chai 中的 API 进行比较?
Comparing function results against API in Chai?
我是 JavaScript 的新手,我已经制作了一个可用的 Node 模块,但我想使用 Mocha 和 Chai 添加一些测试。
我的节点模块 return 是 TVmaze API 的结果。该模块称为 tvmaze-node,可通过 NPM 获得。
例如下面将return结果http://api.tvmaze.com/search/shows?q=girls
pullRequest: function(url, donePulledRequest) {
request(url, function(error, response, body){
if(error || response.statusCode === 404 || body.length == 2) {
donePulledRequest(error || 'No results');
}
else {
donePulledRequest(null, JSON.parse(body));
}
});
},
search: function(show, doneShow){
var url = "http://api.tvmaze.com/search/shows?q=" + show;
module.exports.pullRequest(url, doneShow)
},
我想在 Chai 中做的是确保 search 的结果与来自 [=31] 的 json return 相匹配=].
我知道了 Chai 的结构,但无法理解我生活中的逻辑。出于某种原因,我收到错误消息:
Uncaught AssertionError: expected [ Array(10) ] to deeply equal
'[{"score":2.096719,"show":{......the rest of the array shown at the URL above
describe('Show Search', function() {
it("Returns all results for a given search", function(done) {
tvmaze.search("Lost", function(error, response) {
if(error){
done(error);
} else {
request('http://api.tvmaze.com/search/shows?q=lost', function(error, resp, body){
expect(response).to.eql(body);
done();
})
}
});
done();
});
});
根据代码 donePulledRequest(null, JSON.parse(body));
,您应该检查测试代码中的值,如下所示。
expect(response).to.eql(JSON.parse(body))
我是 JavaScript 的新手,我已经制作了一个可用的 Node 模块,但我想使用 Mocha 和 Chai 添加一些测试。
我的节点模块 return 是 TVmaze API 的结果。该模块称为 tvmaze-node,可通过 NPM 获得。
例如下面将return结果http://api.tvmaze.com/search/shows?q=girls
pullRequest: function(url, donePulledRequest) {
request(url, function(error, response, body){
if(error || response.statusCode === 404 || body.length == 2) {
donePulledRequest(error || 'No results');
}
else {
donePulledRequest(null, JSON.parse(body));
}
});
},
search: function(show, doneShow){
var url = "http://api.tvmaze.com/search/shows?q=" + show;
module.exports.pullRequest(url, doneShow)
},
我想在 Chai 中做的是确保 search 的结果与来自 [=31] 的 json return 相匹配=].
我知道了 Chai 的结构,但无法理解我生活中的逻辑。出于某种原因,我收到错误消息:
Uncaught AssertionError: expected [ Array(10) ] to deeply equal '[{"score":2.096719,"show":{......the rest of the array shown at the URL above
describe('Show Search', function() {
it("Returns all results for a given search", function(done) {
tvmaze.search("Lost", function(error, response) {
if(error){
done(error);
} else {
request('http://api.tvmaze.com/search/shows?q=lost', function(error, resp, body){
expect(response).to.eql(body);
done();
})
}
});
done();
});
});
根据代码 donePulledRequest(null, JSON.parse(body));
,您应该检查测试代码中的值,如下所示。
expect(response).to.eql(JSON.parse(body))