我使用角度材料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。但所有嘲笑他们的尝试都失败了。如果有人知道,当地人如何被嘲笑,我将非常感激!
答案 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
});
}));