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

时间:2015-03-24 16:29:45

标签: angularjs angular-material

我使用角度材料bottomSheet使用locals传递一个对象(参见这里:https://material.angularjs.org/#/api/material.components.bottomSheet/service/ $ mdBottomSheet)。 现在我对你如何在茉莉/业力中正确测试它们感到困惑。 以下是常用的注射方式;我尝试注入本地(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。但所有嘲笑他们的尝试都失败了。如果有人知道,当地人如何被嘲笑,我将非常感激!

1 个答案:

答案 0 :(得分:1)

你是非常亲密的先生!

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

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

我知道Angular Material通过他们的当地人提供它。 options参数中的参数为says here,但您只是假设它与任何其他控制器共享数据与另一个控制器相同,您将其作为提供程序提取到接收控制器,因此您的测试只是反映它!

请尝试这样做,您必须将值提供给控制器实例:

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