gpt4 book ai didi

angularjs - Jasmine + Angular 模块常量

转载 作者:行者123 更新时间:2023-12-02 14:13:49 25 4
gpt4 key购买 nike

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

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

在我的 Controller 中,我写了以下几行

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

我已经为 if 条件编写了 Jasmine 测试用例,但它总是转到 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 后,我开始知道它的发生是因为常量。我认为常量没有正确注入(inject)

有人遇到过这个问题吗?请分享您对此的想法。

最佳答案

问题是,您的 spyOn 方法在执行 Controller 的 if 语句后被调用。因此,您需要在执行之前调用 spyOn 。将 spyOn 执行从 it block 移至 beforeEach block 。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com