2
我的代码(真正的应用程序代码是更复杂的),则点是测试$state.includes
角UI路由器设定的当前状态中的单元测试
$scope.Testing (state) {
if (!$state.includes(state)){
$state.go(state);
}
}
在单元测试这个简单的片段中,我需要设置目前的状态是状态的子状态来进行测试:
spyOn($state,"go");
$state.current.name = "app.subState";//set current state
$scope.Testing("app");
expect($state.go).not.toHaveBeenCalled();
但$state.go
仍称。它在我看来设置$state.current.name
不起作用。然后我想:
spyOn($state,"go");
$state.transitionTo("app.subState");//set current state.
$scope.Testing("app");
expect($state.go).not.toHaveBeenCalled();
不过貌似$state.transitionTo
火灾真正的HTTP请求,并像一个错误结束:Error: Unexpected request: GET /state.html
感谢。
使用Karma html-to-js处理器是个不错的主意,但是如果我们触发一个真实的状态变化,所有的代码初始化状态将会运行,这可能会发送更多的真正的https – 2015-08-13 14:36:36
我不认为ui-view在单元测试中没有真正编译,所以控制器不会被调用。我刚刚尝试了一个非常简单的状态,使用一个创建'$ http'请求的控制器,并在我的单元测试中加载状态。它没有提醒意外的请求,所以我倾向于认为这不会成为问题,尽管需要进一步的测试。 – GabrielG 2015-08-13 14:50:02