Так что я новичок с вещами мокко-чай в nodejs env. Я не понимаю, почему я не могу получить статус ответа при запуске mochajs.

Вот мой код:

let chai = require('chai');
let chaiHttp = require('chai-http');
let server = require('server');
let expect = require("chai").expect;
let should = require("should");

let request = require("superagent");
let util = require("util");

chai.use(chaiHttp);

describe('API Clinic Test', function() {

  it('should list ALL clinic on /api/v1/clinic GET', function(done) {
  chai.request(server)
    .get('http://localhost:5000/api/v1/clinic')
    .end(function(err, res){
        // res.should.have.status(200);
        expect(res.status).to.equal(200);
      done();
    });
  });

  it('should list a SINGLE clinic on /api/v1/clinic/<id> GET');
  it('should add a SINGLE clinic on /api/v1/clinic POST');
  it('should update a SINGLE clinic on /api/v1/clinic/<id> PUT');
  it('should delete a SINGLE clinic on /api/v1/clinic/<id> DELETE');
});

Каждый раз, когда я запускаю mocha test.js, я всегда получаю сообщение об ошибке:

Uncaught TypeError: Невозможно прочитать статус свойства undefined

Охя, я тоже использую метод должен. Я получил еще одно сообщение об ошибке, например: невозможно-прочитать-свойство-должно-из-нуля

Я читал в этой ветке.

Если js не может прочитать свойство 'should' со значением null

Вот почему я хочу изменить и использовать метод ожидания.

Не могли бы вы, ребята, помогите мне.

Благодарю вас.

::: update ::: как решить проблему? вместо использования этой строки кодов:

it('should list ALL clinic on /api/v1/clinic GET', function(done) {
  chai.request(server)
    .get('http://localhost:5000/api/v1/clinic')
    .end(function(err, res){
        // res.should.have.status(200);
        expect(res.status).to.equal(200);
      done();
    });
  });

Я использую это:

it('should list ALL clinic on /api/v1/clinic GET', function(done) {
chai.request('localhost:5000') .get('/api/v1/clinic') 
.end(function(err, res){
            // res.should.have.status(200);
            expect(res.status).to.equal(200);
          done();
        });
      });
1
gutasaputra 5 Янв 2017 в 21:49
Это просто означает, что ваш объект res не определен, поэтому у него нет никаких свойств, включая status, т.е. ваш результат не возвращается. Можете ли вы выполнить простой GET для своей цели из командной строки и подтвердить, что она отвечает 200?
 – 
meatspace
5 Янв 2017 в 21:53

2 ответа

Вы, скорее всего, столкнулись с ошибкой ... у вас должна быть строка, подобная приведенной ниже

if(err) done(err);

Согласно комментариям ... это привело вас в правильном направлении. Более того, вам нужно было сделать следующее:

chai.request('http://localhost:5000').get('/api/v1/clinic')
1
LostJon 5 Янв 2017 в 22:56
Внутри вашего обратного вызова .end () ... в значительной степени там, где находится ваша закомментированная строка. неплохая идея использовать if / else в этом блоке. Для дальнейшей отладки вы можете убедиться, что это не какая-то другая ошибка, заключив команду try / catch
 – 
LostJon
5 Янв 2017 в 22:38
Я не понимаю. Я следую вашим инструкциям и получаю еще одно сообщение об ошибке. Ошибка: подключите ECONNREFUSED 127.0.0.1:80
 – 
gutasaputra
5 Янв 2017 в 22:42
Думал, что добавлю еще немного. как вы отформатированы, вам не нужно указывать URL-адрес localhost, только конечные точки, поскольку вы загружаете chai.request с помощью экспресс-приложения. Итак, я должен выглядеть как chai.request (server) .get ('/ api / v1 / clinic')
 – 
LostJon
5 Янв 2017 в 22:48
1
Или ... вы можете сделать что-нибудь вроде chai.request('http://localhost:5000').get('/api/v1/clinic')
 – 
LostJon
5 Янв 2017 в 22:50
При удаче? если да, я отредактирую свой ответ, чтобы вы могли отметить ответ?
 – 
LostJon
5 Янв 2017 в 22:54

В моем случае я забыл экспортировать модуль вроде export defaul mymodule. Так что проверьте это.

1
Ashwani Panwar 10 Дек 2019 в 12:27