这是一个$资源的测试与装载机测试的角度JS装载机
describe('Service: MultiCalculationsLoader', function(){
beforeEach(module('clientApp'));
var MultiCalculationLoader,
mockBackend,
calculation;
beforeEach(inject(function (_$httpBackend_, Calculation, _MultiCalculationLoader_) {
MultiCalculationLoader = _MultiCalculationLoader_;
mockBackend = _$httpBackend_;
calculation = Calculation;
}));
it('should load a list of calculation from a user', function(){
mockBackend.expectGET('/api/user/600/calculation').respond([{id:5}]);
var calculations;
var mockStateParams = {
userId: 600
};
var promise = new MultiCalculationLoader(mockStateParams);
promise.then(function(res){
calculations = res
});
expect(calculations).toBeUndefined();
mockBackend.flush();
expect(calculations).toEqual([{id:5}]);
});
});
当我运行测试,我得到以下错误:
Expected [ { id : 5 } ] to equal [ { id : 5 } ].
Error: Expected [ { id : 5 } ] to equal [ { id : 5 } ].
at null.<anonymous>
我不明白它。这两个阵列对我来说是一样的。想法任何人?
更新 这里的实现:
.factory('Calculation', function ($resource) {
return $resource('/api/user/:userId/calculation/:calcId', {'calcId': '@calcId'});
})
.factory('MultiCalculationLoader', function (Calculation, $q) {
return function ($stateParams) {
var delay = $q.defer();
Calculation.query({userId: $stateParams.userId},function (calcs) {
delay.resolve(calcs);
}, function() {
delay.reject('Unable to fetch calculations');
});
return delay.promise;
};
})
它似乎工作:http://plnkr.co/edit/DLUaEEzBnyWOUudsaooG?p=preview –
@KhanhTO Yeha但它不工作在我的开发环境。 – Per
你能展示你的'MultiCalculationLoader'是如何实现的吗? –