jha*_*amm 6 javascript unit-testing promise jasmine angularjs
我正在使用基本的karma/jasmine设置来测试我的Angular代码.这是我的测试:
var $controllerConstructor, ctr, mockSuperheroData, scope, deferred, q;
describe('main controller', function() {
var $controllerConstructor, ctr, mockSuperheroData, scope, deferred, q;
beforeEach(inject(function($controller, $rootScope, $q) {
scope = $rootScope.$new();
$controllerConstructor = $controller;
q = $q;
mockSuperheroData = {
getSuperheroes: function() {
deferred = q.defer();
return deferred.promise;
}
};
ctr = $controllerConstructor('MainCtrl', {$scope: scope, $location: {}, superheroService: mockSuperheroData, keys: {}});
}));
it('should set the result of getResource to scope.heroes', function() {
scope.getHeroes();
expect(scope.heroes).toBe(100);
});
}
Run Code Online (Sandbox Code Playgroud)
scope.getHeroes()调用mockSuperheroData.getSuperheroes()正在返回承诺的人.如何强制承诺在单元测试中返回我想要的内容?我在哪里可以接受嘲笑其回报的承诺?
如何强制承诺在单元测试中返回我想要的内容?
基本上你需要调用resolveDeferred:
deferred.resolve(100);
Run Code Online (Sandbox Code Playgroud)
您可以将其直接放在return deferred.promiseasynchronous 之前或中setTimeout。
| 归档时间: |
|
| 查看次数: |
4793 次 |
| 最近记录: |