SuperTest 的 Mocha 测试总是通过(即使是错误的)
Mocha test with SuperTest always passes (even when wrong)
我正在使用 Mocha 和 SuperTest 来测试我的 Express API。然而,在 request()
.
的 .then()
中,我的第一个测试似乎总是通过
我正在将 String
传递给需要 Array
的测试。所以肯定不能通过测试。
如预期的那样,它在 then()
之外失败,但我无法访问那里的 res.body
来执行我的测试。
这是我的代码:
const expect = require('chai').expect;
const request = require('supertest');
const router = require('../../routes/api/playlist.route');
const app = require('../../app');
describe('Playlist Route', function() {
// before((done) => {
// }
describe('Get all playlists by user', function() {
it('Should error out with "No playlists found" if there are no Playlists', function() {
request(app).get('/api/playlists/all')
.then(res => {
const { body } = res;
// Test passes if expect here
expect('sdfb').to.be.an('array');
})
.catch(err => {
console.log('err: ', err);
});
// Test fails if expect here
expect('sdfb').to.be.an('array');
})
})
});
我找到了这个 但我没有使用 try catch
块,但我认为它可能与承诺有关。
快速响应
it('decription', function(done) {
asyncFunc()
.then(() => {
expect(something).to.be(somethingElse)
done()
})
})
@jonrsharpe评论中的详细回复
我正在使用 Mocha 和 SuperTest 来测试我的 Express API。然而,在 request()
.
.then()
中,我的第一个测试似乎总是通过
我正在将 String
传递给需要 Array
的测试。所以肯定不能通过测试。
如预期的那样,它在 then()
之外失败,但我无法访问那里的 res.body
来执行我的测试。
这是我的代码:
const expect = require('chai').expect;
const request = require('supertest');
const router = require('../../routes/api/playlist.route');
const app = require('../../app');
describe('Playlist Route', function() {
// before((done) => {
// }
describe('Get all playlists by user', function() {
it('Should error out with "No playlists found" if there are no Playlists', function() {
request(app).get('/api/playlists/all')
.then(res => {
const { body } = res;
// Test passes if expect here
expect('sdfb').to.be.an('array');
})
.catch(err => {
console.log('err: ', err);
});
// Test fails if expect here
expect('sdfb').to.be.an('array');
})
})
});
我找到了这个 try catch
块,但我认为它可能与承诺有关。
快速响应
it('decription', function(done) {
asyncFunc()
.then(() => {
expect(something).to.be(somethingElse)
done()
})
})
@jonrsharpe评论中的详细回复