如何在茉莉花中测试包含本地人的 bottomSheet-controller?

How to test bottomSheet-controller containing locals in jasmine?

我正在使用 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

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

先生您很亲近!

我认为你的控制器声明看起来像这样:

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

我知道 Angular Material 通过选项参数中的 'locals' 参数提供它 says here,但您只是假设它与共享数据的任何其他控制器相同与另一个控制器一起将其作为接收控制器的提供者拉入,因此您的测试只反映它!

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

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