将函数结果与 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))