首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Promise回调在运行单元测试时不执行

Promise回调在运行单元测试时不执行
EN

Stack Overflow用户
提问于 2015-05-20 21:42:05
回答 1查看 81关注 0票数 0

我想测试以下控制器:

代码语言:javascript
复制
angular.module('myApp').controller('OrderController', ['$scope', 'retryRequest', 'ORDER_STATUS_URL', 'MAX_RETRY',
 function ($scope, retryRequest, ORDER_STATUS_URL, MAX_RETRY) {
  retryRequest(ORDER_STATUS_URL, 'GET', MAX_RETRY).then(function(data) {
    $scope.order = data;
  }).catch(function(data) {
    $scope.error = data.ErrorMessage;
  });
}]);

测试:

代码语言:javascript
复制
describe('Order Controller', function () {

  beforeEach(module('myApp'));

  var $controller, $q;
  beforeEach(inject(function (_$controller_, _$q_) {
    $controller = _$controller_;
    $q = _$q_;
  }));

  describe('When I access order data', function() {
    it('I expect Id to be set', function() {
      var mockRetryRequest = function(){
        var deferred = $q.defer();
        deferred.resolve({ 'OrderId': 'foo' });
        return deferred.promise;
      };
      var $scope = {};
      var controller = $controller('OrderController', { $scope: $scope, retryRequest: mockRetryRequest });
      assert.equal($scope.order.OrderId, 'foo');
    });
  });
});

这导致$scope.order是未定义的。mock被注入,但promise不调用回调(然后)。

可能的候选者是mocha设置。

bower.json

代码语言:javascript
复制
  "name": "client",
  "private": true,
  "dependencies": {
    "chai": "~1.8.0",
    "mocha": "~1.14.0",
    "angular": "1.3.11",
    "angular-mocks": "1.3.11",
    "sinon": "~1.12.2"
EN

回答 1

Stack Overflow用户

发布于 2015-05-20 21:52:30

摘要循环没有运行。调用$rootScope.$digest();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30351477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档