0

我正在使用 angular-material bottomSheet 来传递对象(请参见此处:https : //material.angularjs.org/#/api/material.components.bottomSheet/service/ $mdBottomSheet )。现在我对如何在 jasmine/karma 中正确测试它们感到困惑。下面是常用的注入方式;我尝试注入本地(myLocal)的方式。

beforeEach(inject(function ($controller, $rootScope, _myLocal_) {
    scope = $rootScope.$new();
    myLocal = _myLocal_;
    UserActionsCtrl = $controller('UserActionsCtrl', {
        $scope: scope
    });
}));

这给了我以下错误:

Error: [$injector:unpr] Unknown provider: myLocalProvider <- myLocal

当然没有什么可找到的,因为我没有用填充的本地人调用底部表。但所有嘲笑他们的尝试都失败了。如果有人知道如何嘲笑当地人,我将不胜感激!

4

1 回答 1

1

先生,您非常亲近!

我认为您的控制器声明如下所示:

.controller('UserActionsCtrl', function ($scope, $mdBottomSheet, myLocal)

我知道 Angular Material 通过 options 参数中的“locals”参数提供它,正如这里所说,但您只是假设它与与另一个控制器共享数据的任何其他控制器相同,您将其作为提供者拉入接收控制器,所以你的测试只是反映它!

试试这个,你必须像这样将值提供给控制器实例:

beforeEach(inject(function ($controller, $rootScope) {
    scope = $rootScope.$new();
    var myLocal = {};
    UserActionsCtrl = $controller('UserActionsCtrl', {
        $scope: scope,
        myLocal: myLocal
    });
}));
于 2015-03-28T01:00:02.353 回答