在Google groups post on deprecating loopback-testing上有一个问题,询问提供一个如何在没有环回测试的情况下实现测试的正确示例 . 该线程谈到使用supertest而不是 .
下面是我尝试将Mocha,supertest和模型(from app.js)结合起来的尝试 . 当我自己运行文件时,结果非常好 . 但是,如果我有另一个测试文件(比如test-teacher.js),那么第一个测试文件(称为test-student.js)开始以奇怪的方式失败,我无法描述 .
我错过了什么或者可以使用不能使用的模型,就像我在下面使用它们一样?
describe('/Student', function () {
var server = require('../server/server')
var loopback = require('loopback')
var supertest = require('supertest')
var request = require('supertest')(server)
var dataSource = server.dataSource('db', {adapter: 'memory'})
var Student = dataSource.define('Student', {
'id': Number,
'points': Number
});
beforeEach(function () {
Student.updateOrCreate({id: 1, points: 5000});
})
it('Post a new student', function (done) {
request.post('/api/Students').send({points: 5000}).expect(200, done)
})
})
2 回答
根据jakerella对前一个答案的反馈,我更改了上面的代码,以便我不必在代码中从头开始重新定义模型(感谢jakerella!)
使用下面的代码,我可以使用
npm test
将多个不同模型的所有测试作为单个套件运行,而不会出现任何故障 .因为我只对个别订单感兴趣...所以不需要倾听和关闭 . 我怀疑,如果我正在测试创建的模型的整体实例,那么它将成为必需 .
想把它扔进答案......第一个问题是一个未定义的
dataSource
var,但是你也在你的两个测试中重新定义了Student
. 我的建议是使用LoopBack应用程序和已定义的模型(通常在common/models/
) . 然后测试的基本实现(我使用)类似于下面的代码(使用mocha
和chai
) . 注意beforeEach
和afterEach
来启动和停止服务器 .