Вот как воспроизвести. Используя ember-cli
0.44, создайте новое приложение и сгенерируйте модели user
и address
. Каждый из них belongsTo
друг друга.
Затем напишите модульный тест для address
, который выглядит следующим образом:
test('it has a user', function() {
var model = this.subject();
var store = this.store();
Ember.run(function() {
var user = store.createRecord('user');
model.set('user', user);
ok(true);
});
});
добавление needs: ['model:user']
к тесту. Тест проходит.
Теперь введите ember g acceptance-test index
. Модульные тесты прерываются для модели прямо на строке model.set
:
Died on test #1 at test (http://localhost:4200/assets/test-support.js:278:13)
at eval (ember-wtf/tests/unit/models/address-test.js:21:5)
at requireModule (http://localhost:4200/assets/vendor.js:70:29)
at http://localhost:4200/assets/test-loader.js:14:29: Assertion Failed: You can only add a 'user' record to this relationship
Source:
Error: Assertion Failed: You can only add a 'user' record to this relationship
at new Error (native)
at Error.EmberError (http://localhost:4200/assets/vendor.js:26705:23)
at Object.Ember.assert (http://localhost:4200/assets/vendor.js:16889:15)
at null.<anonymous> (http://localhost:4200/assets/vendor.js:70696:17)
at Descriptor.ComputedPropertyPrototype.set (http://localhost:4200/assets/vendor.js:25311:22)
at set (http://localhost:4200/assets/vendor.js:30004:14)
at __exports__.default.Mixin.create.set (http://localhost:4200/assets/vendor.js:44299:9)
at eval (ember-wtf/tests/unit/models/address-test.js:29:15)
at Object.Backburner.run (http://localhost:4200/assets/vendor.js:13365:27)
at apply (http://localhost:4200/assets/vendor.js:31547:27)
Любые идеи? store.createRecord
нельзя использовать в модульных тестах?
Рекомендации:
store
из моего теста не совпадает с тем, что использовался вember-data
для утверждения. Так чтоuser instanceof store.modelFor('user')
верно с моим магазином, но не с тем, который используется в либе. - person Sam Selikoff   schedule 19.09.2014