我想为羽毛服务编写一些单元测试。
我希望这个测试完全独立运行,这意味着我不想使用数据库。
这是我的服务的一个示例片段,它使用sequelize:
src/services/messages/messages.service.js
// Initializes the `messages` service on path `/messages`
const createService = require('feathers-sequelize');
const createModel = require('../../models/messages.model');
const hooks = require('./messages.hooks');
const filters = require('./messages.filter');
module.exports = function (app) {
const app = this;
const Model = createModel(app);
const paginate = app.get('paginate');
const options = {
name: 'messages',
Model,
paginate
};
// Initialize our service with any options it requires
app.use('/messages', createService(options));
// Get our initialized service so that we can register hooks
const service = app.service('messages');
service.hooks(hooks);
if (service.filter) {
service.filter(filters);
}
};我可能会尝试用库后缀-测试帮手来模拟数据库,但我不确定这将如何与羽毛一起工作。
以下是我当前在此服务的类型记录中的测试结果:
src/test/services/messages.test.ts
import assert from 'assert';
import { app } from '../../src/app';
describe('\'messages\' service', () => {
before(() => {
// maybe add an entry to the mocked database
});
after(() => {
// maybe delete that entry
});
it('registered the service', () => {
const service = app.service('messages');
assert.ok(service, 'Registered the service');
});
it('returns a single record', async () => {
// get result with id 1 (maybe added item in before-hook)
const res = await service.get(1);
should().exist(res);
res.should.be.a('object');
// more checks...
});
});第一个‘it(.)’是由羽毛本身生成的,第二个‘it(.)’显示了我希望测试具有的功能。
但问题是,我不知道如何编写这个测试,这样服务就不会使用原始数据库。
你们中有人知道我如何在不使用实际数据库的情况下为羽毛服务编写测试吗?提前感谢!
发布于 2021-08-29 22:34:56
将环境设置为测试,并在配置中设置test.json上的数据库。如图所示:https://docs.feathersjs.com/guides/basics/testing.html#test-database-setup
https://stackoverflow.com/questions/59704537
复制相似问题