gpt4 book ai didi

javascript - responseTime 在 Mockjax 中不起作用

转载 作者:行者123 更新时间:2023-11-30 12:32:43 26 4
gpt4 key购买 nike

我需要模拟很长的响应时间。我的 Moockjax 正在运行——它提供了正确的模拟数据。但是我的 ajax 调用是在我加载页面的那一刻完成的,即使我将 responseTime 设置为 20 秒也是如此。

你有想法吗?

我将我的测试页面减少到最少,以排除其他潜在的错误来源:

<!DOCTYPE HTML>
<html>
<head>
<script src="jquery.js"></script>
<script src="../jquery.mockjax.js"></script>
<title>MockJax Tests</title>
</head>
<body>
<h1>A MockJax test.</h1>
<p>Take a look into the console.</p>
<script>

$.mockjax({
url: "foo.html",
responseTime: 20000,
responseText: "Hi! I am mockjax."
});

$.ajax({
async: false,
url: 'foo.html',
success:function(data){
console.log(data);
},
error:function(data){
console.log('It doesn’t work that way :(');
}
});

</script>
</body>
</html>

我还使用 CasperJS 和 Mockjax(在 casper.evaluate 内部)编写了一个测试。那里也一样。

这是我的 CasperJS 代码

var casper = require("casper").create({
verbose: true,
logLevel: 'error',
clientScripts: ["node_modules/jquery-mockjax/jquery.mockjax.js"]
});

casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
})

casper.start('http://der-zyklop.de/', function() {
this.evaluate(function () {

$.mockjax({
url: "/blog/feed",
responseTime: 20000,
responseText: "Hi! I am mockjax!"
});

$.ajax({
async: false,
url: '/blog/feed',
success:function(data){
console.log(data);
},
error:function(data){
console.log('It doesn’t work that way :(');
}
});

});
});

casper.run();

如果您安装了 CasperJS,您应该能够通过 npm install jquery-mockjax 然后 casperjs test.js 运行它。它在 20 秒内给我这个输出:

mockjax output

我还写了一篇关于它的博客文章here .

最佳答案

Mockjax 目前无法进行阻塞延迟。查看current code :

if ( requestSettings.async === false ) {
// TODO: Blocking delay
process();
} else {
this.responseTimer = setTimeout(process, parseResponseTimeOpt(mockHandler.responseTime) || 50);
}

您需要指定 async: true 才能正常工作。当您这样做时,您将需要在 casper 上下文中等待,因为控制流将继续而无需等待结果。

casper.start(url, yourEvaluateFunction).wait(25000).run();

我认为,除了以某种方式执行忙等待之外,JavaScript 甚至可能出现阻塞延迟。但在此期间,其他所有内容也将保持不变(JavaScript 是单线程的),您不会从 busywait 中获得任何好处。

关于javascript - responseTime 在 Mockjax 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124056/

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