节点,Express.js。无法获得POST请求以通过Chai的测试

时间:2019-03-09 23:04:42

标签: javascript node.js rest express chai

我正在进行柴测试的练习。我的POST路线无法通过测试。

这是我遇到的两个错误:

1) Todo API:

   POST /v1/todos

     should create and return a new todo when provided valid data:

 AssertionError: expected header 'location' to have value /v1/todos/5c84450e466b4b769a39cdc1 but got undefined

  at chai.request.post.send.then.res (test/server.test.js:114:27)

  at <anonymous>

  at process._tickCallback (internal/process/next_tick.js:189:7)

2) Todo API:

   POST /v1/todos

     should respond with 400 status when given bad data:

 Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

我不知道如何在响应中设置标题。而且,我不确定为什么我的条件没有捕获到不良数据情况。我在此glitch

上有它

1 个答案:

答案 0 :(得分:0)

首先,因为它是一个异步测试,所以您可能需要像这样调用“完成”:

it('should do something async', function(done) {

    someasyncstuff().then(function(results) {
        done()
    }
}

第二,您需要在server.js中指定要发送的实际位置标头:

res.location('/mylocationheaderhere');
res.status(201).json(...);

例如此处:'res.location(path)' does not do anything? (Express)

最后,如果要在server.js中使用“ id”,则需要在测试代码的正文中将其发送:

const newItem = {
        'title': 'Do Dishes',
        id: 12345
      };