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