2015-05-11 2 views
2

В нашем проекте мы используем js-data и js-data-angular.Обезличивание модулей в js-данных угловых моделях

У меня есть следующие модели:

(function() { 
    'use strict'; 
    angular.module('dash.models') 
    .factory('Diagnosis', ['DS', function (DS) { 
     function transform(resourcename, attrs, cb) { 
     attrs.icd9codes.forEach(function (el) { 
      delete el.add; 
     }); 
     cb(null, attrs); 
     } 

     this.transform = transform; 

     return DS.defineResource({ 
     name: 'diagnosis', 
     idAttribute: 'id', 
     endpoint: '/diagnosis', 
     baseUrl: '/api', 
     beforeCreate: transform, 
     beforeUpdate: transform 
     }); 
    }]); 

}()); 

И следующий вызов к указанной модели:

var startEditing = self.startEditing = function(parentScope, diagnosis) { 
     Diagnosis.findAll({ 
     deep:true 
     }, { 
     endpoint: '/diagnosis/' + diagnosis.id 
     }).then(function(d) { 
     $scope.diagnosis = d; 
     $scope.inScope = true; 
     }); 
    }; 

В моем тестовом модуле, я издеваться вызов, как это:

var diagDeferred = _$q_.defer(); 
    diagDeferred.resolve({ 
     'name': 'Breast', 
     'categories': null, 
     'id': '026c7cd0-14ef-4312-a8f1-2092107b0e50', 
     'icd9codes': [{id: '1', code: '001', description: 'ICD9 Code'}] 
    }); 

    spyOn(Diagnosis, 'findAll').and.returnValue(diagDeferred.promise); 

И фактический звонок издевается, что не выполняется (и я не могу найти никакой надежной информации о том, как это сделать) является th e в пределах .then от Diagnosis.findAll

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

Спасибо.

ответ

3

Я думаю, вы забыли позвонить $scope.digest() в свой тест. Вот работающий fiddle.

После вызова startEditing(), вы должны позвонить $scope.$digest() так, что ваш макет promise выполняется, и вы можете получить ваши данные в then блоке. Надеюсь, поможет.

+0

Это полностью сработало! Я думал, что я пробовал это в прошлом, и это не сработало, но теперь это работает для меня. Спасибо! – daniel0mullins