如果用户连续两次非常快速地点击表单的提交按钮,我的应用中就会出现错误。我可以在生产和开发环境中可靠地重现这一点。
我可以用Capybara / poltergeist / phantomjs重现这个吗?
find("#my-button").double_click
,find("#my-button").click.click
,execute_script("$('#register-button').click().click();")
以及execute_script
的其他变体不起作用。
我尝试的所有内容只会导致我的服务器端代码被调用一次,即使console.log
日志记录显示click
确实被调用了两次。所以我怀疑水豚的能力从根本上缺少了一些东西,并且吵闹的人会模仿这种行为。
有没有办法以某种方式在较低级别调用phantomJS并实现此目的?
我确实尝试了increasing我的网络服务器的并发性,它没有帮助。
答案 0 :(得分:1)
正如您所猜测的那样 - let answer = true;
var postAxios = axios({
method: 'post',
url: httpLink,
params: {table: tableName},
data: rowInfo
}
)
.then(function (response) {
console.log(response);
alert(response);
answer = true;
})
.catch(function (error) {
console.log(error);
alert(error);
answer = false;
});
return answer;
与点击两次不同。只需点击两次即可
double_click
或者,根据您的错误,您可能需要在这两次点击之间稍微睡一会儿
find("#my-button").click.click
答案 1 :(得分:1)
这里采用略有不同的方法:这个bug的修复方法是什么?是否更容易测试修复,而不是测试这些操作是否无法执行?
例如,如果修复是在disable-with
上使用Rails UJS <input type=submit>
,那么您的测试可能类似于:
# replace `your_path` as required
visit your_path
# important: this stops the submission so the page doesn't change;
# but crucially doesn't stop UJS from doing its thing
execute_script("$('form').submit(function() { event.preventDefault() })")
# replace 'Submit form' and 'Processing...' text as appropriate
click_button('Submit form')
expect(page).to have_button('Processing...', disabled: true)