"Попытка зарегистрировать неизвестную фабрику" в тесте модели

У меня есть эти модели в приложении 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

Другие вопросы по тегам