Я пытаюсь написать модульный тест для проверки моего контроллера. У меня есть вычисляемое свойство, которое использует вычисляемое свойство модели.
Я не знаю, как настроить тест для загрузки данных в модель.
Вот у меня есть моя модель:
App.User = DS.Model.extend({
name: DS.attr('string'),
roles: DS.hasMany('role'),
isInstructor: function(){
return this.hasRole('instructor');
}.property('roles'),
hasRole: function(role_name){
var roles = this.get('roles');
if(!Ember.isEmpty(roles)){
return roles.any(function(role){
return role.get('name') === role_name;
});
}
return false;
}
});
И вот у меня есть мой контроллер:
App.MyClassDetailsController = Ember.ObjectController.extend({
students: function () {
return this.get('users').filter(function (user) {
return !user.get('isInstructor');
});
}.property('content.users.@each')
});
И в моем тесте, когда я настраиваю контент для контроллера, я делаю это:
myClassDetailsController.set('model', Ember.ObjectProxy.create({
id: 389,
name: 'bfcoding 101',
users: Ember.ArrayProxy.create({
content: [
Ember.ObjectProxy.create({id: 1, name: 'Joe', roles: Ember.ArrayProxy.create({content: [Ember.ObjectProxy.create({name: 'instructor'})]})}),
Ember.ObjectProxy.create({id: 2, name: 'vs', roles: Ember.ArrayProxy.create({content: [Ember.ObjectProxy.create({name: 'student'})]})}),
Ember.ObjectProxy.create({id: 3, name: 'Volcano', roles: Ember.ArrayProxy.create({content: [Ember.ObjectProxy.create({name: 'student'})]})})
]
})
}));
И это явно не загружает его правильно. Потому что, когда я вызываю этот метод студентов:
myClassDetailsController.get('students.length')
Он возвращает всех пользователей.
Вот jsbin http://jsbin.com/zafod/1/
В jsbin, когда он фильтрует всех пользователей, вычисляемое свойство isInstructor никогда не вызывается, потому что данные модели никогда не загружались (я полагаю). Когда я делаю этот вызов, он возвращается неопределенным.
Итак, как мне загрузить эти данные в модель?
Спасибо!
ic-ajax
Райана, мы решили не использовать ее в моем коде, но это потому, что мы писали ember-тесты в течение года или около того, поэтому она не добавила тонну в нашу среду. - person Kingpin2k   schedule 22.05.2014