"Попытка зарегистрировать неизвестную фабрику" в тесте модели
У меня есть эти модели в приложении ember-cli:
var PuzzleRound = DS.Model.extend({
year: DS.attr('number')
});
var Puzzle = DS.Model.extend({
puzzleRounds: DS.hasMany('puzzleRound', {async: true})
});
И вот мой тест от tests/unit/models/puzzle-test.js
:
import {
moduleForModel,
test
} from 'ember-qunit';
import PuzzleRound from 'weather-roulette/models/puzzle-round';
moduleForModel('puzzle', 'Puzzle', {
// Specify the other units that are required for this test.
needs: ['model:puzzleRound']
});
test('it exists', function() {
var model = this.subject();
// var store = this.store();
ok(!!model);
});
Я получаю эту ошибку при запуске ember test
:
Attempting to register an unknown factory: `model:puzzleRound`
Я использую ember-cli 0.1.1, Ember.js 1.7.0, Ember Data 1.0.0-beta.11. У кого-нибудь есть что-нибудь, что я могу попробовать исправить?
2 ответа
Я только что опробовал этот код с ember-cli 0.0.44 и получил ту же ошибку, что и вы.
Я переименовал обе ссылки на puzzleRound
модельный путь к puzzle-round
и тогда твой тест прошел для меня. Так:
DS.Model.extend({
puzzleRounds: DS.hasMany('puzzle-round', {async: true})
});
а также
moduleForModel('puzzle', 'Puzzle', {
needs: ['model:puzzle-round']
});
Я знал, что стиль переносов был предпочтительнее стиля camelCase, но я не уверен, когда это станет обязательным. Это требование может быть специфичным для ember-cli или ember-qunit.
Я некоторое время искал решение, похожее на это, и не видел упоминаний о своем решении, поэтому решил, что все равно опубликую здесь. Это действительно очень просто: убедитесь, что контроллер, на который вы ссылаетесь, действительно есть.
// my-ember-application/tests/unit/controllers/index/bar-test.js
moduleFor('controller:index/bar', 'My Bar Test', {
beforeEach() { .. }
});
test('it exists', function (assert) {
assert.ok(true);
});
Этот код будет ссылаться на контроллер в этом месте:
my-ember-application/app/controllers/index/bar.js