如何使用Jasmine测试AngularJs全局变量

问题描述

我有一个场景,需要使用Karma Jasmine测试控制器方法。场景很简单,

角度代码

var globalVariable = "startEapplication";    
$scope.myMethod = function(request,response) {
                    if(globalVariable === "startEapplication" && request.customer) {

现在,我需要为否定场景测试传递null而不是startEapplication。基本上,我需要从Karma Jasmine中模拟全局变量。

反正可以从Karma Jasmine修改Angular全局变量。

解决方法

首先,globalVariable不是角度全局变量,并且由于它是在控制器内部声明的,因此您将无法从规范本身进行访问。

如果要涵盖负面情况,我曾经按照以下方法测试私有变量。

要测试负面情况,您可以声明一个单独的私有对象并将其与作用域关联。

示例:

// Add the comment saying this should be only be accessed for unit test puropse
$scope._private_ = {
    globalVariable : "startEapplication"
}

此外,您还需要以比较方式进行更改,以便规范也可以指向相同的对象,例如

if($scope._private_.globalVariable === "startEapplication")

现在,您可以在规范中模拟此全局变量。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...