使用Karma在控制器中触发一个功能

时间:2014-03-31 21:50:14

标签: angularjs unit-testing karma-runner

在角度控制器中,我的示波器功能如下:

$scope.myFunction = function(val) {
$scope.myVar = val;
$scope.mySettings.myPath = $scope.myBase + $scope.myVar;
}

在我的业力单元测试中,我想使用我提供的值在控制器上触发该函数...然后检查$ scope.mySettings.myPath以确保它是我认为应该是的。

我在业力中尝试这个:

describe("Unit Testing: Controller Testing" , function() {
describe('myController' , function () {
var scope,ctrl;

beforeEach(module('myApp.controllers'));
beforeEach(inject(function($rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('myController', {
$scope: scope
});
}));

it('should have a working changeVideo function' , function(){
scope.changeVideo(scope.myVar[6]);
expect(scope.mySettings.myPath).to.equal('Expected String');
});
});
});

我看到的错误是它无法调用未定义的相等方法。这是奇怪的,因为scope.mySettings.myPath实际上是在控制器中预定义的,所以它永远不应该是未定义的。

为了给出一些背景知识,我确实可以访问控制器和来自业力的范围。不过这个让我很难过。

1 个答案:

答案 0 :(得分:0)

对此的解决方案是使用toEqual()而不是to.equal()