问题描述
我有一个场景,需要使用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")
现在,您可以在规范中模拟此全局变量。