Rspec/capybara - 在测试中模拟从在线到离线的切换(webkit 驱动程序)
Rspec/capybara - simulate switch from Online to offline within a test (webkit driver)
我在 Rails 4 应用程序上有一个 ruby。
用户加载一个页面(称为 deal_page),然后他单击一个按钮,该按钮加载 Rails UJS 模态消息。
如果他在线,当他点击按钮时,我会使用 javascript 离线状态识别显示一条消息(在 Rails UJS ajax 事件中)。
on('ajax:error',function(event,xhr, status, error){
var isOnLine = navigator.onLine;
event.preventDefault();
if (isOnLine) {
//do stuff }
else {
// for disconnected users WHEN triggering call to server, invite to reconnect
var msg;
msg = Messenger().post({
message: "You lost internet,You need to be connected"
});
}
});
我想在 rspec/capybara(我使用 webkit 驱动程序)中测试在我的功能测试中是否显示正确的内容 ("You need to be connected. Please connect and try again")。
context "As signed-in visitor who is OFFLINE line when he clicks on the area triggering the modal" do
it "displays the right message " do
visit deal_page_path(deal)
# HOW TO ASSERT THAT THE USER LOSES HIS INTERNET CONNECTION
# USER GOES OFFLINE
first("a#button").click
within('ul.messenger') do
expect(page).to have_content('You lost internet,You need to be connected')
end
end
end
复杂的是我不能从测试开始就断开他的连接,因为他需要连接才能加载页面访问 deal_page_path(deal) 但后来我想模拟他输了互联网连接。
如何实现?
假设您只是检查 window.naviagtor.onLine
以确定它是否是 on/offline(不取决于任何事件或任何事情)并且因为您正在使用 capybara-webkit
(赢得因为 FF 不会让你覆盖导航器,所以不能在 selenium 中工作,不确定 poltergeist)你可以用你想要的结果覆盖 window.navigator
。您还需要为 ajax 请求生成错误响应,您可以使用 puffing-billy
page.execute_script "window.navigator = { onLine: false }"
我在 Rails 4 应用程序上有一个 ruby。 用户加载一个页面(称为 deal_page),然后他单击一个按钮,该按钮加载 Rails UJS 模态消息。
如果他在线,当他点击按钮时,我会使用 javascript 离线状态识别显示一条消息(在 Rails UJS ajax 事件中)。
on('ajax:error',function(event,xhr, status, error){
var isOnLine = navigator.onLine;
event.preventDefault();
if (isOnLine) {
//do stuff }
else {
// for disconnected users WHEN triggering call to server, invite to reconnect
var msg;
msg = Messenger().post({
message: "You lost internet,You need to be connected"
});
}
});
我想在 rspec/capybara(我使用 webkit 驱动程序)中测试在我的功能测试中是否显示正确的内容 ("You need to be connected. Please connect and try again")。
context "As signed-in visitor who is OFFLINE line when he clicks on the area triggering the modal" do
it "displays the right message " do
visit deal_page_path(deal)
# HOW TO ASSERT THAT THE USER LOSES HIS INTERNET CONNECTION
# USER GOES OFFLINE
first("a#button").click
within('ul.messenger') do
expect(page).to have_content('You lost internet,You need to be connected')
end
end
end
复杂的是我不能从测试开始就断开他的连接,因为他需要连接才能加载页面访问 deal_page_path(deal) 但后来我想模拟他输了互联网连接。
如何实现?
假设您只是检查 window.naviagtor.onLine
以确定它是否是 on/offline(不取决于任何事件或任何事情)并且因为您正在使用 capybara-webkit
(赢得因为 FF 不会让你覆盖导航器,所以不能在 selenium 中工作,不确定 poltergeist)你可以用你想要的结果覆盖 window.navigator
。您还需要为 ajax 请求生成错误响应,您可以使用 puffing-billy
page.execute_script "window.navigator = { onLine: false }"