gpt4 book ai didi

javascript - 测试 angularjs ui-router go() 方法

转载 作者:可可西里 更新时间:2023-11-01 01:46:15 24 4
gpt4 key购买 nike

我有一个 Controller ,它从 $scope 获取一个值并将它发送到不同的状态:

controllers.controller('SearchController', ['$scope', '$state', '$stateParams',
function($scope, $state, $stateParams) {
$scope.search = function() {
$stateParams.query = $scope.keyword;
$state.go('search', $stateParams);
};
}]);

我不确定如何对这种搜索方法进行单元测试。我如何验证 go 方法是否已被调用或执行某种 when($state.go('search', $stateParams)).then(called = true); with Karma/AngularJS?

最佳答案

这两件事听起来都像是你可以用 Jasmine spy 做的事情。

describe('my unit tests', function() {
beforeEach(inject(function($state) {
spyOn($state, 'go');
// or
spyOn($state, 'go').andCallFake(function(state, params) {
// This replaces the 'go' functionality for the duration of your test
});
}));

it('should test something', inject(function($state){
// Call something that eventually hits $state.go
expect($state.go).toHaveBeenCalled();
expect($state.go).toHaveBeenCalledWith(expectedState, expectedParams);
// ...
}));
});

这里有一个很好的 spy 备忘单http://tobyho.com/2011/12/15/jasmine-spy-cheatsheet/或实际的 Jasmine 文档 here .

使用 spies 的好处是它可以让你避免实际执行状态转换,除非你明确告诉它。如果更改 URL,状态转换将使您在 Karma 中的单元测试失败。

关于javascript - 测试 angularjs ui-router go() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com