【发布时间】:2016-06-24 07:11:11
【问题描述】:
在指令中模拟 $stateParams 的最佳方法是什么? $stateParam 成员会根据测试而改变。
我可以使用 $controller('ctrl', $stateParams) 在控制器中轻松模拟 $stateParams,但不知道如何修改注入指令的 $stateParams。
我已经用下面的方法装饰了 $stateParams,但只能在我创建模块时声明。正如我所提到的,$stateParam 成员将通过不同的测试多次更改。
beforeEach(angular.mock.module(function ($provide) {
$provide.provider('$stateParams', function () {
return {
myStateParam: true,
myOtherStateParam: 'some text'
};
});
}));
【问题讨论】:
-
我的建议:将指令中所有与 DOM 无关的工作委托给控制器(使用
controller: 'MyDirectiveController'传递给指令,并测试控制器。 -
你可能是对的。无论如何,它是保持指令解耦的更好模式。我会接受你的回答。
-
我不认为这是一个答案:只是一个好的解决方法。即使现在没有实际意义,您的问题也是有效的。但是你所拥有的很好。只需将其放入每个
it,而不是将其放入beforeEach。
标签: angularjs unit-testing angularjs-directive jasmine