gpt4 book ai didi

javascript - 等待测试中的 stateChange

转载 作者:行者123 更新时间:2023-12-03 06:18:21 24 4
gpt4 key购买 nike

我的 Controller 中有一个作用域函数,其中包含一些异步函数。一切完成后,它会改变状态。

Controller .js

$scope.test = function () {
async().then(function () {
$state.go('somewhere');
});
};

我可以用 setTimeout() 来测试它,但我认为那很脏。

如何在测试中等待 stateChange?

编辑:

我想为 test() 函数编写单元测试,但由于它不是 promise ,所以我需要监视测试中的状态更改。但如何呢?它可以与 setTimeout() 配合使用,但我不想使用 setTimeout() 因为它感觉不对。状态有类似 $scope.$watch 的东西吗?

测试.js

...

it('test()', function (done) {
$scope.test();
setTimeout(function () { // I want this replaced with a listener for state
expect($scope.someVar).to.be.equal('value');
expect($state.current.name).to.be.equal('somewhere');
});
});

...

最佳答案

当我编辑问题来描述我的问题时,我找到了解决方案。可以监听广播事件,因此可以使用

...

it('test()', function (done) {
$scope.test();
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
expect($scope.someVar).to.be.equal('value');
expect(toState.name).to.be.equal('somewhere');
});
});

...

关于javascript - 等待测试中的 stateChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38978612/

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