【发布时间】:2014-03-31 21:50:14
【问题描述】:
在一个角度控制器中,我的示波器上有一个如下所示的函数:
$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 实际上是在控制器中预定义的,所以它永远不应该是未定义的。
为了提供一些背景信息,我确实可以从 karma 访问控制器和范围。不过,这个让我难过。
【问题讨论】:
-
你能发布完整的测试吗?
-
不是
toEqual()吗?或者干脆toBe() -
我发布了一个带有更完整测试的编辑
-
JB 你是对的 ... toEqual() 不是 to.equal() ... 谢谢
标签: angularjs unit-testing karma-runner