2016-07-06 79 views
0

我是新来编写测试单位和努力执行我的测试时,我收到以下错误:测试中jasmine-返回类型错误的错误:未定义不是对象

TypeError: undefined is not an object (evaluating '$scope.createRoleForm.canCreateAccount=false') 

我想要的功能测试:

function enableAccountRoles() { 
    $scope.createRoleForm.canCreateAccount = false; 
    $scope.createRoleForm.canListAccounts = false; 
    $scope.createRoleForm.canSearchAllChat = false; 
    $scope.createRoleForm.canManageSite = false; 
    } 

和我的测试代码

it('should call enableAccountRoles', function() { 
    this.scope.enableAccountRoles(); 
    }) 

我知道,这是不完整的,因为我甲肝e没有期望 - 在运行测试单元之前是否需要在测试文件中设置变量的值?

回答

0

是的,您需要设置预期值。看下面的例子。

的Javascript功能来测试

function Add(x, y) { 
return x + y; 
} 

的TestCase代码:

describe("Math Test Cases", function() { 

it("Additon Test Case", function() { 
    expect(Add(3, 4)).toBe(7); 
}); 
}); 

角测试代码:

var MyApp = angular.module("MyModule", []); 
MyApp.controller("MyController", function ($scope) { 

$scope.number1 = 0; 
$scope.number2 = 0; 
$scope.total = 0; 

$scope.Addition = function() { 
    $scope.total = $scope.number1 + $scope.number2; 
}; 
}); 

角测试用例:

describe("Angular Test cases", function() { 

it("Addition test case", function() { 
    module("MyModule"); 

    var scope = {}; 

    inject(function ($controller) { 
     $controller("MyController", { $scope: scope }); 
    }); 

    scope.number1 = 4; 
    scope.number2 = 5; 
    scope.Addition(); 
    expect(scope.total).toBe(9); 
}); 
}); 
相关问题