Ember Cli Mirage: использование светильников в приемочных испытаниях - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь использовать осветительные приборы с моими приемочными тестами, однако их тесты вызывают сбой из-за дублирования данных, поскольку осветительные приборы повторно вставляются в базу данных mirage при каждом тесте. Есть ли способ обойти это или убрать крепления при каждом тесте

setupApplicationTest(hooks);
setupMirage(hooks);

hooks.beforeEach(function() {
    this.server.loadFixtures();
});

1 Ответ

0 голосов
/ 08 ноября 2018

Откуда этот код, который вы мне показывали выше?

В приемочном тесте Mirage автоматически запускает / останавливает сервер из инициализатора, который он связывает в своем аддоне под addon/instance-initializers/ember-cli-mirage-autostart.js:

let server = startMirage(appInstance);
testContext.server = server;

// To ensure that the server is shut down when the application is
// destroyed, register and create a singleton object that shuts the server
// down in its willDestroy() hook.
appInstance.register('mirage:shutdown', MirageShutdown);

который звонит:

willDestroy() {
   let testContext = this.get('testContext');
   testContext.server.shutdown();
   delete testContext.server;
}

Ember запускает и останавливает приложение между каждым тестом, что означает, что каждый приемочный тест автоматически начинается с пустой базы данных.

Если вы находитесь вне контекста приемочного теста, вам нужно начать останавливаться самостоятельно.

// tests/integration/components/your-test.js
import { startMirage } from 'yourapp/initializers/ember-cli-mirage';

moduleForComponent('your-component', 'Integration | Component | your component', {
  integration: true,
  beforeEach() {
    this.server = startMirage();
  },
  afterEach() {
    this.server.shutdown();
  }
});

Вызов отключения после каждого теста жизненно важен для очистки данных

...