在Google groups关于弃用loopback-testing的帖子中,有一个问题询问如何提供一个适当的示例来演示如何在没有loopback-testing的情况下进行测试。该帖讨论了使用supertest的方法。
以下是我的一个尝试,结合了Mocha、supertest和模型(来源于app.js)。当我单独运行该文件时,结果非常好。但如果我再有另一个测试文件(test-teacher.js),那么第一个测试文件(test-student.js)就会以我无法描述的奇怪方式失败。
我是否遗漏了什么,或者像我下面所用的那样不能使用模型?
以下是我的一个尝试,结合了Mocha、supertest和模型(来源于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)
})
})
dataSource
变量的?无论如何,在同一测试运行中的多个文件都共享内存,这意味着您还共享内存模型定义和数据。我猜你在其中某个地方启动了 LB 应用程序,是吗?你需要确保关闭它,但数据可能仍然存在。那就是我的猜测。 - Jordan KasperdataSource
声明。关于启动 LB 应用程序,我不会显式地执行它。可以使用mocha test/test-student.js
运行上述代码。然后我可以使用mocha test
运行所有测试。通过定义与服务器的请求,它调用 LB。 - Dakotah NorthStudent
。当我在test-teacher.js中注释掉Student
时,上面的测试就可以工作了。然后显然test-teacher.js中的测试失败了,因为它现在不知道Student
的存在。 - Dakotah North