我有一个Angular应用程序,其中定义了应用程序常量。

var module=angular.module('abc');
module.constant('constants',{
  INTERNAL_VALUE:1
});


在我的控制器中,我写了以下几行

  if(someService.getInternalValue() === constants.INTERNAL_VALUE){
        $scope.showDropdown=true;
        someservice.somefunction().then(function(data){
          $scope.dropDownData=data;
        });
     }else{
         $scope.showDropdown=false;
     }


我已经为if条件编写了茉莉花测试用例,但它总是转到else条件。

it('should show dropdown on user persmission',inject(function($controller){
                spyOn(someServiceMock,'getInternalValue').andCallFake(function(){
                    return 1;
                });
                expect(someServiceMock.getInternalValue()).toBe(1); // passed
                expect(constants.INTERNAL_VALUE).toBe(1);// passed
                expect(scope.showDropdown).toBe(true); // here it should be true but I am getting "Expected false to be true." error
            }));


当我完成一些RnD时,我就知道它是由于常量而发生的。我认为常量未正确注入

有人可以面对这个问题吗?
请分享您对此的想法。

最佳答案

问题是,将在执行控制器的spyOn语句后调用if方法。因此,您需要在执行之前放置spyOn调用。将spyOn执行从it块移到beforeEach块。

关于angularjs - Jasmine + Angular 模块常数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23102584/

10-12 01:10