我有一个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/