【问题标题】:Trigger a function in a controller with Karma使用 Karma 在控制器中触发功能
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-06-27
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多