水豚别名页面方法

戴夫·柯克(Dave Kirk)

我是Rails的新手,所以我可能在这里完全错过了这个问题,但是在使用引用了我自己的Page类的测试时,在Capybara中似乎出现了问题。

当我进行的测试创建了Page类的实例(通过FactoryGirl)时,则无法运行任何Capybara页面方法(例如visit,fill_in,click等)。我收到以下错误:

NoMethodError:
   undefined method `visit' for #<Page:0x007fdf5eb9d990>

当我添加调试器语句并检查page变量时,它是我的Page类的一个实例。当我要执行Capybara方法时,如何确保我始终使用Capybara页面?

我的功能规格(我知道这是不完整的,但是该错误发生在before循环中):

require 'spec_helper'

feature 'Modifying a page' do
  let(:account) { FactoryGirl.create(:account) }
  let!(:page_creator) { FactoryGirl.create(:user, :account => account) }
  let!(:standard_user) { FactoryGirl.create(:user, :account => account) }
  let!(:site) { FactoryGirl.create(:site, :account => account) }
  let!(:page) { FactoryGirl.create(:page, :account => account, :site => site, :creator => page_creator) }

  context 'as the creator of the page' do
    before(:each) { sign_in_via_form account, page_creator, page_creator.password }

    scenario 'with valid information' do
      new_page_name = Faker::Lorem.characters(Random.rand(10..100))
      new_page_url = Faker::Internet.url
      new_page_description = Faker::Lorem.characters(Random.rand(50..250))

      click_link site.name
      click_link 'Pages'
      find("a[href='#{edit_site_page_path([site, page])}'").click
    end
  end
end

sign_in_via_form方法在以下文件中定义:

module AuthenticationHelpers
  include Warden::Test::Helpers
  Warden.test_mode!

  def sign_in_via_form(account, user, password)
    visit "http://#{account.subdomain}.example.com"
    fill_in 'Email', :with => user.email
    fill_in 'Password', :with => password
    click_button 'Sign In'
  end
end

我还有许多其他功能可与正在运行的不同模型配合使用(并且使用上述sign_in_via_form方法不会出现任何问题,这就是我认为这与Page类有关)的原因。

就像我说的那样,我是Rails的新手,所以如果这些测试看起来有些难看,您就必须原谅我:-)

谢谢你的帮助

戴夫·柯克(Dave Kirk)

好的,它是如此简单,以至于我错过了真正的问题。

我使用let名为方法创建了一个变量,该方法page显然覆盖了Capybara页面变量。我将其更改为以下内容,并且一切都按预期运行(请注意变量the_page):

feature 'Modifying a page' do
  let(:account) { FactoryGirl.create(:account) }
  let!(:page_creator) { FactoryGirl.create(:user, :account => account) }
  let!(:standard_user) { FactoryGirl.create(:user, :account => account) }
  let!(:site) { FactoryGirl.create(:site, :account => account) }
  let!(:the_page) { FactoryGirl.create(:page, :account => account, :site => site, :creator => page_creator) }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

水豚不会进入页面

来自分类Dev

水豚:水豚未定义的方法'期望'

来自分类Dev

水豚click_link方法补丁

来自分类Dev

水豚访问不会加载该页面

来自分类Dev

水豚:从加载的页面保存图像(而不是屏幕截图)

来自分类Dev

水豚不会在测试中呈现页面

来自分类Dev

如果页面具有选择器-水豚

来自分类Dev

水豚测试中的页面变量是什么?

来自分类Dev

水豚内部方法的正确用法是什么?

来自分类Dev

水豚选择方法找不到单选按钮

来自分类Dev

水豚::: dsl :: module的未定义方法'delegate'

来自分类Dev

水豚:[]:Array的未定义方法“ link”

来自分类Dev

与水豚接近的模态

来自分类Dev

水豚NoMethodError

来自分类Dev

水豚麻烦

来自分类Dev

水豚麻烦

来自分类Dev

水豚-如何测试链接到同一页面的不同部分?

来自分类Dev

尽管黄瓜步骤成功,但水豚却没有访问该页面

来自分类Dev

如何选择页面中的所有链接并将其存储在水豚中的数组中?

来自分类Dev

即使在页面上可见,水豚也无法检测到元素

来自分类Dev

水豚中的多个会话

来自分类Dev

水豚使用的文字的位置

来自分类Dev

让水豚等待元素消失

来自分类Dev

水豚atta_file

来自分类Dev

水豚使用的文字的位置

来自分类Dev

水豚如何匹配元素

来自分类Dev

水豚定义可选参数

来自分类Dev

水豚硒sqlite错误

来自分类Dev

水豚:查找没有特定文本的元素的简单方法