Mocha Chai AssertionError: ожидаемый массив будет json - PullRequest
0 голосов
/ 23 января 2019

1) Этот первый набор тестов работает хорошо, не выдавая никаких ошибок.

chai.request(app) .get('/api/courses') .end((err, res) => {
res.should.have.status(200);
res.body.should.be.a("json");
done(); });

2) Хотя и говорится, что «AssertionError: ожидается, что [Array (3)] будет json», хотя ничего не изменилось.

describe("Courses", () => {
describe("GET /api/courses", () => {
    it("should get all the courses", (done) => {
        chai.request(app)
             .get('/api/courses')
             .end((err, res) => {
                 res.should.have.status(200);
                 res.body.should.be.a("json");
                 done();
              });
    })
}); 

});

Я буквально только что вставил описание, и оно дает больше информации о тесте.

App.js

App.test.js

Пример изображения здесь

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Я не думаю, что мы можем проверить, является ли тело json или нет, используя эту команду.

res.body.should.be.a("json"); // invalid

Если вы посмотрите документацию chai или здесь , вы не сможете указать json внутри a() функции.

Альтернативное решение: вы можете проверить json из res.headers, а также вы можете проверить, является ли тело ответа массивом или не таким, как

chai
  .request(app)
  .get("/api/courses")
  .end((err, res) => {
    res.should.have.status(200);

    res.body.should.be.a('array'); 
    res.headers["content-type"].should.contains('application/json');

    done();
  });

Надеюсь, это поможет

0 голосов
/ 23 января 2019

В любом случае, чего вы хотите достичь с помощью этого теста?

РЕДАКТИРОВАТЬ: Извините, я не хотел, чтобы это было опубликовано в качестве ответа.Но пока я уже здесь:

Насколько я могу судить, chai работает как положено, так как возвращаемое значение, которое вы получаете, на самом деле является массивом, а не json (хотя json-файл вNodeJ могут быть массивом).Вот почему тест не проходит.Если вы хотите проверить фактический заголовок ответа, вы можете протестировать res.headers.Почему это работало вне теста мокко, я не могу вам сказать, но чувствую, что это скорее показ, чем реальная ошибка, как в том, как вы на самом деле проверяли, что утверждение было правильно проверено?

...