在test中等待stateChange
Wait for stateChange in test
我有一个范围函数在我的控制器与一些异步函数。当所有操作完成后,它会改变状态。
controller.js
$scope.test = function () {
async().then(function () {
$state.go('somewhere');
});
};
我可以用setTimeout()
测试,但我认为那很脏。
我如何在测试中等待stateChange ?
编辑:我想为test()
函数编写单元测试,但由于没有承诺,我需要观察测试中的状态变化。但如何?它与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');
});
});
...
可以使用
$q.all.(promises).then(
function(){
$state.go()
});
等待你的任务完成,只要你能把它们包装在一个承诺中。
相关文章:
- 单击按钮以等待单击按钮
- React组件等待所需道具进行渲染
- 正在等待呈现图表,直到加载数据为止
- 在等待ajax请求时显示微调器并禁用页面
- Javascript在for循环中等待处理请求
- JavaScript循环并等待函数
- 在等待异步任务时永久循环
- 在通过child.print()打印之前,我如何等待图像加载到我的新窗口中
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 等待300毫秒,然后使用jQuery向下滑动菜单
- 等待循环调用的所有承诺完成
- 等待回调函数执行
- RxJS等待承诺解决
- WIll window.addEventListener(“加载”,function(),false);等待浏览器自动填
- Casperjs等待资源
- draggableCursor没有't更改为等待光标
- 如何使请求等待上一个请求完成
- 更改css链接并等待加载新的css
- 让ng更改等待$watch完成
- 在test中等待stateChange