【发布时间】:2015-07-31 22:39:28
【问题描述】:
我无法理解 angular、sinon 和 promises。如果我需要测试这样的东西:
myCtrl.js
angular.module('app')
.controller('myCtrl', ($scope, dataService)=> {
dataService.list('location').then((lst)=> {
$scope.list = lst;
});
});
myCtrl-spec.js
describe('testing controller', ()=> {
var locations = ['A','B','C'], dataService, $scope;
beforeEach(module('app'));
beforeEach(inject($controller, $rootScope, _dataService_, $q) => {
dataService = _dataService_;
$scope = $rootScope.$new();
let lstStub = sinon.stub(dataService,'list');
let promise = $q.defer();
lstStub.withArgs('location').returns(promise);
}));
it('gets locations', ()=> {
$controller('myCtrl', { $scope, dataService });
$scope.$digest();
expect($scope.list).to.be.equal(locations);
})
})
如何告诉诗浓 promise 的解决方式?
【问题讨论】:
-
请注意,
$q.defer()返回的是deferred对象,而不是promise。为此,您需要deferred.promise。
标签: angularjs unit-testing mocha.js karma-runner sinon