【发布时间】:2019-08-27 17:06:13
【问题描述】:
我制作了一个非常简单的 RESTful API,允许用户添加、删除和更新有关霍格沃茨学生的信息。 Mongo 充当持久层。
对url/students 的 GET 请求应该返回所有学生对象的列表。在为它编写测试时,我写了
expect(res).to.equal('student list');
这只是为了确保测试会失败而进行的初步检查,但实际上并非如此,而是我收到此错误:
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): AssertionError: expected { Object (domain, _events, ...) } to equal 'student list'
所以它知道这两个值是不同的,但不是测试失败,而是抛出一个错误。 我在下面粘贴了完整的测试代码。
let chai = require('chai');
let chaiHttp = require('chai-http');
var MongoClient = require('mongodb').MongoClient;
chai.use(chaiHttp);
const expect = chai.expect;
describe('Students', async () => {
describe('/GET students', () => {
it('should GET all the students', async () => {
chai.request('http://localhost:5000')
.get('/students')
.then(function (res) {
try {
expect(res).to.equal('hola');
} catch (err) {
throw err;
}
})
.catch(err => {
throw err; //this gets thrown
})
});
});
});
如果你能告诉我正确使用 async await 来编写这些测试的语法,请也这样做。
【问题讨论】:
-
.catch() 然后(...)。注意: async 语句只有在使用 await 语句时才有意义
-
那行不通,不过我会更新上面的代码。添加 .catch 后,它捕获了 AssertionError 但关键是为什么会有 AssertionError 呢?
-
console.log res,如果 res != "hola",则抛出 AssertionError
-
res 应该是一个对象,但是expect 应该没有通过测试,为什么会有错误呢?为什么测试没有失败?
-
尝试一个示例
it('should be true', ()=>expect(false).to.equal(true)),如果它像您想要的那样工作而不是您的示例,那是因为承诺。也许你可以检查一下:stackoverflow.com/questions/55520801/…
标签: javascript node.js ecmascript-6 mocha.js chai