gpt4 book ai didi

javascript - rspec 测试 : putting :js => true also affects the before block

转载 作者:行者123 更新时间:2023-11-30 17:07:10 25 4
gpt4 key购买 nike

我有一个用于预约的页面,它有一些 javascript 代码可以选择预约可用的最早时间和日期,之后用户可以单击按钮来安排预约。

所以为了测试它,我写了一些像下面这样的 rspec 测试,

book_appointment_spec.rb

context "when on the profile page" do 
before do
click_linkedin_button
end

it 'book an appointment', :js => true do
click_link "new-appointment"
choose "doctor1"
click_button "Submit and Schedule"
expect(page).to have_content "Congrats!"
end
end

click_linkedin_button 是一个方法定义,仅通过 linkedin oauth 登录用户。问题是,即使在设置了 OmniAuth.config.mock_auth[:linkedin] 之后,每当我在它周围设置 :js => true block 时,它都会要求我通过 linkedin 登录,http://imgur.com/mYUOxgD

我想知道是否有人知道如何解决这个问题。

以下是可能与此问题相关的其他文件。

spec_helper.rb

require 'capybara/webkit/matchers'
Capybara.javascript_driver = :webkit

gem 文件

gem 'capybara-webkit'
gem 'database_cleaner'
gem 'capybara'

最佳答案

正如您所发现的,您不能使用一个驱动程序运行部分测试,而使用另一个驱动程序运行部分测试。这相当于说

Given I login in using Safari.
Then I should be logged in using Firefox.

所以你的解决方案是你必须在测试环境中运行你的js登录代码才能登录。这其实是一件好事(你要测试你的js登录代码)。如果你想避免实际连接到 linkedin,每次运行这个测试时,你都需要模拟到 linkedin 的连接。查看 VCR ( https://github.com/vcr/vcr ),这将允许您记录您与 linkedin 的连接,以便在后续测试运行中您不必转到 linkedin。

关于javascript - rspec 测试 : putting :js => true also affects the before block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27763655/

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