игнорировал детские тесты в Frisby JS с jasmine-node

Я использую Frisy с jasmine-node для тестирования Meteor API.

Я хочу протестировать удаление обсуждения в приложении чата. Для этого мне нужно создать новое обсуждение в чате и добавить сообщение в обсуждение.

Я заметил, что мой тест не удался, если я поставил его после второго метода .then (). Это не удается также после третьего .then (). Однако он работает правильно после первого метода .then ().

Пример кода с явным провалом теста expect (false) .toBe (true);:

var frisby = require('frisby');
describe("chat update", function() {
  it("message added", function(done) {
    frisby.post('http://localhost:3000/api/chat', {
      name: "remove"
    })
    .then(function (res) {
      let id = res._body.id;
      expect(false).toBe(true); // (1) it fails the test
      frisby.post('http://localhost:3000/api/chat/'+id+'/addmessage', 
        {
          auteur: "Samuel",
          message: "My message"
        }
      )
      .then(function (res) {
        expect(false).toBe(true); // (2) Without (1) it's ignored by frisby
        frisby.post('http://localhost:3000/api/chat/remove', 
          {id: id}
        )
        .then(function (res) {
          expect(false).toBe(true); // (3) Without (1) it's ignored by frisby
        })
      });
    })
    .done(done);
  })
});

Если я запустил тест, он завершится неудачно из-за expect (false) .toBe (true); // (1) он не проходит тест. Если я удалю эту строку, тест будет запущен, и jasmine подтвердит ее правильность.

Вы знаете, как не игнорировать тесты (2) и (3)?


person Samuel Dauzon    schedule 17.09.2017    source источник
comment
Вы используете старую версию Frisby или более новую? Я спрашиваю, потому что в старой версии использовался jasmine-node, а в новой - Jest.   -  person S.Huston    schedule 18.09.2017
comment
Пользуюсь более новой. Я нашел решение и поставил его в качестве ответа. Я забыл операторы возврата. Спасибо.   -  person Samuel Dauzon    schedule 19.09.2017


Ответы (1)


Наконец, я нашел решение. Это потому, что я забыл вернуть все действия frisby (кроме первого), как в следующем коде:

var frisby = require('frisby');
describe("chat update", function() {
  it("message added", function(done) {
    frisby.post('http://localhost:3000/api/chat', {
      name: "remove"
    })
    .then(function (res) {
      let id = res._body.id;
      return frisby.post('http://localhost:3000/api/chat/'+id+'/addmessage', 
        {
          auteur: "Samuel",
          message: "My message"
        }
      )
      .then(function (res) {
        return frisby.post('http://localhost:3000/api/chat/remove', 
          {id: id}
        )
        .then(function (res) {
          expect(false).toBe(true); // Will fail the test
        })
      });
    })
    .done(done);
  })
});

Вы можете заметить операторы return перед frisby.post (). Надеюсь, это поможет !

person Samuel Dauzon    schedule 18.09.2017