Написание юнит-тестов для сервисов в перьях без использования базы данных - PullRequest
1 голос
/ 12 января 2020

Я хотел бы написать несколько юнит-тестов для сервисов перьев. Я хочу, чтобы этот тест выполнялся полностью независимо, что означает, что я не хочу использовать базу данных. Это пример фрагмента моего сервиса, который использует 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);
  }
};

Возможно, я бы попытался смоделировать базу данных с библиотекой sequelize-test-helpers но я не уверен, как это будет работать в сочетании с перьями. Вот так выглядит мой текущий тест в машинописи для этого сервиса: SRC / тест / услуги / 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 (...) ' показывает функциональность, которую должен иметь тест. Но проблема в том, что я не уверен, как написать этот тест, чтобы служба не использовала исходную базу данных. У кого-нибудь из вас есть идея, как я мог бы написать тест для сервиса перьев, не используя реальную базу данных? Заранее спасибо!

...