在 UI-Router 中获取当前控制器实例? (在测试中)

Get current controller instance in UI-Router? (in tests)

我根据this answer设置了一个路由测试。我现在想检查注入到路由控制器的东西是否设置正确。从状态对象中,我只能得到控制器的构造函数。我想知道如何访问实际实例?

作为官方解决方案,这可能太迂回了,但它似乎可行。如果你在你的状态中使用 controller-as 语法,即 "SomeController as ctrl",那么它会被添加到具有给定名称的 $scope 对象中。之后,您可以在以下位置找到它:

$state.$current.locals['@viewname'].$scope.ctrl

...其中“@viewname”是您的视图名称,'ctrl' 是您的控制器别名。

可能应该有更简单的方法来做到这一点。对于编写跨越多个状态的测试来说,这将是一个非常方便的功能(无需求助于 Protractor/Selenium)