Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chai无法读取属性';应该';空的_Javascript_Mocha.js_Chai_Knex.js - Fatal编程技术网

Javascript Chai无法读取属性';应该';空的

Javascript Chai无法读取属性';应该';空的,javascript,mocha.js,chai,knex.js,Javascript,Mocha.js,Chai,Knex.js,在使用对单个项目进行单元测试时,我遇到以下错误。我也在引用这个 它成功呈现api/users/1。所以我不知道它为什么说空 GET/api/users/:id 应返回单个节目: 未捕获的TypeError:无法读取null的属性“应” at-should(tests/users.spec.js:59:26) users.spec.js import chai from 'chai'; import { expect } from 'chai'; import chaiHttp from 'cha

在使用对单个项目进行单元测试时,我遇到以下错误。我也在引用这个

它成功呈现api/users/1。所以我不知道它为什么说空

GET/api/users/:id 应返回单个节目: 未捕获的TypeError:无法读取null的属性“应” at-should(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.get('/users/:id', (req, res) => {
    return knex('users').where({id: req.params.id})
        .then( (user) => {
            res.json({
                user: user
            })
        });
})
routes/users.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.get('/users/:id', (req, res) => {
    return knex('users').where({id: req.params.id})
        .then( (user) => {
            res.json({
                user: user
            })
        });
})

您正在从
chai
导入
expect
,而不是
should
。您可以更改:

response.should.have.status(200)
预期(响应).to.have.status(200)(对所有的should语句执行此操作)

或应通过更改以下内容导入:

从'chai'导入{expect}
从'chai'导入{should}


希望有帮助

根据文档,您需要编写
expect(response).to.have.status(200)
,因此您应该遵循官方文档,而不是3年前的博文:其他内容如何?我得到
未捕获类型错误:当使用
expect(response).to.have.status时,无法使用'in'操作符在null中搜索'status'(200);
阅读整个文档,您的教程已经过时。