我是Capybara的新手,希望有人可以帮我解决我遇到的问题。
作为测试的一部分,我有许多不同的测试规范文件。目前在每个spec文件的顶部,我创建了一个新的Capybara会话,其中包含以下内容: session = Capybara :: Session.new(:selenium)。
当只有一个spec文件要运行时,这个工作正常,但我发现当我尝试一起运行多个不同的spec文件测试(包含在一个文件夹中)时,它会为每个首先创建一个新的实例,我最终会有很多不同的浏览器窗口。有没有办法在一个地方而不是每个测试规范文件中都有这个?
我之前有过黄瓜和watir的经验,你可以做些什么是在你的env文件中创建你的浏览器实例。你也可以在这里拆解。在rspec / capybara中有相同的东西吗?我试过把' session = Capybara :: Session.new(:selenium)'在我的spec帮助文件中输入,但是当我尝试运行测试时,我得到了未定义的局部变量或方法`session'即使我有要求' spec_helper'在每个测试规范中。
任何帮助都会很棒!如果上述任何一项不明确,请告诉我,我会尽力澄清。
答案 0 :(得分:3)
Scott Alister描述了如何在他的blog上为watir和rspec做这件事。你可以为capybara和rspec调整相同的内容。
尝试:
session = Capybara::Session.new(:selenium)
RSpec.configure do |config|
config.before(:each) { @session = session }
end
请注意,您的测试会使用@session
变量来引用会话。