0
任何人都可以幫助我解決以下情況,如何使用karma angular來實現此目的。 $ stateChangeSuccess很簡單,沒有任何回調函數。但是爲stateChangeStart找到困難。statechangestart的測試用例
$scope.$on('$stateChangeStart', function (event, toState, toParams, fromState) {
if (fromState.name.match('test.abc') && ($scope.validate())) {
event.preventDefault();
}
});
試圖像下面,但我不知道,我在正確的道路
var fromState = {name: 'test.abc'};
var toState = {name: 'test.xyz'};
scope.$on('$stateChangeStart');
expect(scope.$on).toHaveBeenCalled();
expect(fromState.name)toBe('test.abc');
/* expect event prevent default? */
我是否需要通過fromState,使用toState ARGS的呢? – Mithun
@Hansie你可以傳遞任何你想回調的東西。當像上面的例子那樣提取時,它只是一個正常的功能。沒有什麼比其他任何不同。在你的特定情況下,你必須從狀態傳遞,否則fromState.name.match('test.abc')會拋出異常。 – sielakos
謝謝你,對於最後一個愚蠢的問題感到抱歉。那個參數可以是一個數組嗎?我需要將'事件,狀態,toParams,fromState'傳遞給我。我是如何徹底地通過這一切?要麼通過數組?並且事件應該被窺探或者通過創建一個使用var event = scope的外部模擬來傳遞。$ broadcast('click');'plz clarrify – Mithun