【问题标题】:restangular multiple promise jasminerestangular 多重承诺茉莉花
【发布时间】:2016-04-22 22:52:54
【问题描述】:

我尝试使用 Jasmine 测试我的阵列(存储)是否还有一个项目。我有多个承诺链,但我无法进入第一个,承诺没有任何反应(.then)。

这是我的测试:

beforeEach(inject(function ($state, $controller, $rootScope, $q) {
    state = $state.get('app.provision_requests_create');
    ctrl = $controller('ProvisionRequestsCreateCtrl', {
      $scope: $rootScope.$new(),
      provider: {
        data: {
          priceStorage: function () {
            return $q(function (resolve) {
              resolve({ data: [] });
            });
          }
        }
      }
    });
  }));

  describe("should test add Volume", function() {
    it('should remove volume properly ', function () {

      ctrl.createVolume(volume);
      ctrl.provider.priceStorage().then(function(){
        console.log('ok');
      });

    });

这是我的功能:

_this.provider = provider.data;
_this.instance.additional_values.storage = [];

_this.createVolume = function (volume) {
    var newvol = angular.copy(volume);

    //reset input and select
    angular.copy({},volume);

    return _this.provider.priceStorage(newvol.kind).then(function (resp) {
      ...
      return _this.provider.priceSnapshot();
    })
    .then(function (resp) {
      _this.instance.additional_values.storage.push(newvol);
    });
  };

当我 console.log ctrl.provider.priceStorage() 我有这个

d{$$state: Object{status: 1, value: Object{data: ...}}}

当我 console.log ctrl.createVolume() 时,我有这个

d{$$state: 对象{状态: 0}}

【问题讨论】:

    标签: javascript angularjs unit-testing jasmine


    【解决方案1】:

    ctrl.provider.priceStorage() 是一个承诺。

    Promise 以这种方式进行测试:

      ctrl.provider.priceStorage().then(function (result) {
        expect(result).toEqual(...);
      });
      $rootScope.$digest();
    

    使用Jasmine Promise matchers 扁平化规范中的承诺链。

    【讨论】:

    • 谢谢,但我知道,问题是我的承诺没有发生任何事情,即使我写了这样的期望(结果).toEqual('okokok');我没有结果,没有错误,什么都没有……
    • @user3703539 使用 $rootScope.$digest() 在 specs 中触发 $q 链。
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多