Узел, Express.js. Не удалось получить POST-запрос для прохождения тестирования на Чай - PullRequest
0 голосов
/ 10 марта 2019

Я собираюсь пройти упражнение с тестированием Чай. Я не могу пройти 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.

Я не знаю, как установить заголовок в ответе. И я не уверен, почему мое условие не фиксирует случай с неверными данными. У меня это на этом глюк

1 Ответ

0 голосов
/ 10 марта 2019

Во-первых, потому что это асинхронный тест, вам, вероятно, нужно вызвать 'done' следующим образом:

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

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

Во-вторых, вам нужно указать фактический заголовок местоположения, который вы хотите отправить в server.js:

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

например здесь: 'res.location (path)' ничего не делает? (Express)

Наконец, если вы хотите использовать 'id' в server.js - вам нужно отправить его в теле в вашем тестовом коде:

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