ember-cli: moduleFor завершается с ошибкой при попытке зарегистрировать неизвестную заводскую ошибку

Я не могу заставить moduleFor работать в новой сборке с помощью ember-cli версии 0.1.5.

При использовании кода примера документации для moduleFor (и никаких других изменений в приложение), я получаю следующую ошибку после запуска ember test:

TypeError: Attempting to register an unknown factory: `route:index`
    at Object.Container.register (http://localhost:4200/assets/vendor.js:14473:17)
    at isolatedContainer (http://localhost:4200/assets/test-support.js:24:19)
    at Object._callbacks.setup (http://localhost:4200/assets/test-support.js:150:23)
    at Object.Test.setup (http://localhost:4200/assets/test-support.js:1063:31)
    at http://localhost:4200/assets/test-support.js:1168:10
    at process (http://localhost:4200/assets/test-support.js:887:24)
    at http://localhost:4200/assets/test-support.js:476:5

Поскольку я не вносил никаких изменений в приложение, кроме добавления примера moduleFor в /tests/unit/index-test.js, похоже, это ошибка ember-cli? Для справки ниже приведен код для примера moduleFor:

// my-app/tests/unit/index-test.js
import { test, moduleFor } from 'ember-qunit';

moduleFor('route:index', "Unit - IndexRoute", {
  setup: function () {},
  teardown: function () {}
});

test("it exists", function(){
  ok(this.subject());
});

person jake    schedule 10.01.2015    source источник
comment
Маршрут существует?   -  person Buck Doyle    schedule 10.01.2015
comment
Да, я считаю, что маршрут существует. Индексный маршрут — это один из автоматически созданных маршрутов (с emberjs.com). /guides/routing/defining-your-routes/).   -  person jake    schedule 10.01.2015
comment
Да, но мне интересно, если попытаться создать экземпляр одного из автоматически сгенерированных маршрутов для тестирования, будет как-то иначе. Ошибка исчезнет, ​​если вы добавите маршрут в app/routes/index.js? Если у вас нет маршрута туда, что вы хотите протестировать?   -  person Buck Doyle    schedule 10.01.2015


Ответы (1)


Кажется, что маршрут автоматически генерируется, когда он направляется. Но при запуске модульного теста с moduleFor(), как вы делаете, не будет IndexRoute, если вы явно не объявите его. Если вам нужен IndexRoute, который вы можете протестировать, вам нужно будет определить его вручную:

import Ember from 'ember'

IndexRoute = Ember.Route.extend();

export default IndexRoute

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

Я думаю, если вы включите LOG_ACTIVE_GENERATION, вы сможете увидеть, когда что-то будет генерироваться.

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

Я предполагаю, что он генерируется здесь.

person Kevin Bullaughey    schedule 27.01.2015