Javascript Chai无法读取属性';应该';空的
在使用对单个项目进行单元测试时,我遇到以下错误。我也在引用这个 它成功呈现api/users/1。所以我不知道它为什么说空 GET/api/users/:id 应返回单个节目: 未捕获的TypeError:无法读取null的属性“应” at-should(tests/users.spec.js:59:26) users.spec.jsJavascript 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
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);
阅读整个文档,您的教程已经过时。