Чай не может прочитать свойство 'следует', равное нулю - PullRequest
0 голосов
/ 09 апреля 2019

Я получаю следующую ошибку при модульном тестировании одного элемента с использованием knex . Я также ссылаюсь на это https://mherman.org/blog/test-driven-development-with-node/

Он успешно отображает api / users / 1. Так что не уверен, почему он говорит, что ноль.

GET / api / users /: id Должен вернуть одно шоу: Uncaught TypeError: Невозможно прочитать свойство 'should' из null в случае необходимости (tests / users.spec.js: 59: 26)

users.spec.js

import chai from 'chai';
import { expect } from 'chai';
import chaiHttp from 'chai-http';
import { assert } from 'assert'
import users from '../routes/users';
import request from 'supertest';


describe('GET /api/users/:id ', () =>{
    it('Should return a single show ', (done)=> {
       chai.request(users)
            .get('/users/1')
            .set('Accept', 'application/json')
            .end((response) => {
                // error begins here
                response.should.have.status(200);
                response.should.be.json; 
                response.body.should.be.a('object');
                response.body.should.have.property('id');
                response.body.name.should.equal(1);
                done()
            })          

    });
})

маршруты / users.js

users.get('/users/:id', (req, res) => {
    return knex('users').where({id: req.params.id})
        .then( (user) => {
            res.json({
                user: user
            })
        });
})

1 Ответ

1 голос
/ 09 апреля 2019

Вы импортируете expect из chai вместо should. Вы можете изменить:

response.should.have.status(200); до expect(response).to.have.status(200); (сделайте это для всех ваших заявлений о необходимости)

или импортировать следует, изменив:

import { expect } from 'chai'; до import { should } from 'chai';

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

...