将函数结果与Chai中的API进行比较?

时间:2016-03-13 21:58:26

标签: javascript node.js chai

我对JavaScript很陌生,我制作了一个可以运行的Node模块,但是我想用Mocha和Chai添加一些测试。

我的节点模块返回TVmaze API的结果。该模块称为tvmaze-node,可通过NPM获得。

例如,以下内容将返回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做的是确保搜索的结果与从网址返回的json匹配。

我有Chai的结构,但无法弄清楚我的生活中的逻辑。出于某种原因,我收到错误:

  

Uncaught AssertionError:期望[Array(10)]深度相等   '[{“得分”:2.096719,“show”:{...... 上面网址中显示的数组的其余部分

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();
  });
});

1 个答案:

答案 0 :(得分:1)

根据代码donePulledRequest(null, JSON.parse(body));,您应该检查测试代码中的值,如下所示。

expect(response).to.eql(JSON.parse(body))