gpt4 book ai didi

javascript - 如何在我的案例中创建函数测试

转载 作者:行者123 更新时间:2023-12-03 10:08:59 27 4
gpt4 key购买 nike

我正在尝试在我的应用程序中测试超时功能。

在我的 Controller 中

$scope.$watch('toy',function(toyVar){
if(toyVar == 1) {
//do stuff
} else {
$timeout(function() {
$window.alert('toy is old');
}, 3000);
}
});

测试文件。

describe('test', function () {
var ctrl, scope;
beforeEach(module('testApp'));
beforeEach(inject(function (_$controller_, _$rootScope_) {
scope = _$rootScope_.$new();

ctrl = _$controller_('toyCtrl', {
$scope: scope
});
}));

describe('test here', function() {
it('should check if timeout function works', function() {
//not sure how to write test here.
})
})
});

我不确定如何为代码的 $timeout 部分编写测试。谁能帮我解决这个问题吗?非常感谢!

最佳答案

您需要做几件事,确保在这种情况下执行的唯一方法是查看警报是否触发。让我们看看这些东西:

  • 监视 $window.alert 以查看它是否被调用。
  • toy 设置不同于 1 的内容
  • 执行 $digest 以便 $watch 运行。
  • $timeout 上调用 flush 来模拟时间流逝和函数运行。
  • 检查 $window.alert 是否运行,这意味着一切正常。

类似于:

it('should check if timeout function works', function() {
spyOn($window, 'alert');
$scope.toy = 2;
$scope.$digest();
$timeout.flush();
expect($window.alert).toHaveBeenCalledWith('toy is old');
});

如果您确实不需要,请不要使用下划线语法。

查看它的工作情况 here

关于javascript - 如何在我的案例中创建函数测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224066/

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