使用Loopback,我们创建了一些自定义远程方法,并希望对该逻辑进行单元测试。我想要实现的是仅加载一个模型,而不是所有模型,并对该模型的自定义远程方法进行单元测试。
我们可以将此模型连接到内存数据库(而不是在我们的情况下使用Postgres),但不知何故,我需要告诉Loopback关于这个隔离的模型,而不使用Loopback boot。(如果我们使用标准的Loopback boot(app.boot()),它将加载所有模型和整个过程,我认为我们应该避免这种情况以达到隔离的目的)。
我们在进行中的单元测试中设置了这个设置:
基本上我想做的是像这样的事情:
我们可以将此模型连接到内存数据库(而不是在我们的情况下使用Postgres),但不知何故,我需要告诉Loopback关于这个隔离的模型,而不使用Loopback boot。(如果我们使用标准的Loopback boot(app.boot()),它将加载所有模型和整个过程,我认为我们应该避免这种情况以达到隔离的目的)。
我们在进行中的单元测试中设置了这个设置:
const supertest = require('supertest');
//load the schema for the model
const ContactSchema = require(path.resolve(projectRoot + '/server/models/contact.json'));
const opts = {
strict: true
};
const dataSource = loopback.createDataSource({
connector: loopback.Memory
});
const Contact = dataSource.createModel('Contact', ContactSchema, opts);
//load remote methods for this model
require(path.resolve(projectRoot + '/server/models/contact.js'))(Contact);
const app = loopback();
this.it.cb('test contact', t => {
supertest(app).get('/api/Contacts')
.expect(200)
.end(function (err, res) {
if (err) {
t.fail(err); // we naturally get a 404, because the model hasn't been attached to this Loopback server
}
else {
t.done();
}
});
});
所以,我不想使用Loopback boot,而是想要加载模型模式和模型逻辑,并将其以隔离的方式附加到Loopback应用程序中。
是否有Loopback调用可用于将此模型附加到Loopback服务器/应用程序中?
我正在寻找这种类型的调用:
app.useModel(Contact);
基本上我想做的是像这样的事情:
app.models.Contact = Contact;
但这绝对不是正确的做法 - 只需要找到正确的 API 调用。
也许这就是正确的调用方式?
Contact.attachTo(loopback.memory());