【问题标题】:Ruby on Rails: How to TDD with javascript:void(0) routeRuby on Rails:如何使用 javascript:void(0) 路由进行 TDD
【发布时间】:2014-08-23 07:05:40
【问题描述】:

我正在尝试以与the tuturial do 相同的方式测试我的注册表单。

但在本教程中,注册页面是一个页面,所以这样做没问题:

visit signup_path.

对我来说,签名表格是通过 javascript 弹出的显示:

<%= link_to( "Inscrivez-vous !", "javascript:void(0)", id: "button-inscription" ) %>

如何在 Ruby on Rails 中使用 TDD 进行模拟?

这是我们按下按钮时的动作:

$('#button-inscription').click(function() {

    showinscription();
});

function showinscription()
{
    document.getElementById("wrapper-inscription").style.visibility="visible";
    document.getElementById("bloc-inscription").style.visibility="visible";
}

谢谢


编辑

这是我的配置:

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
  gem 'factory_girl_rails', '4.2.0'
end

这是我现在的测试:

  describe "signup form", js: true do
    before { visit root_path }

    it { click_link("button-inscription") }
    it { should have_content('Inscription') }
  end

在 spec/spec_helper.rb 我添加了:

Capybara.javascript_driver = :webkit

那些测试失败了

【问题讨论】:

    标签: javascript ruby-on-rails ruby rspec tdd


    【解决方案1】:

    你会这样做

    page.click_link "Connexion"
    

    因为您的链接只是触发 javascript,所以这要求您使用能够执行 javascript 的水豚驱动程序(例如 poltergeist)。默认驱动程序(机架测试)不会处理这个问题。

    如果您使用的是 rspec,那么您可以将规范标记为 js,如果您想继续使用机架测试驱动程序用于其他规范(主要原因是速度),则可以设置 Capybara.javascript_driver

    【讨论】:

    • 好的,谢谢你的方法。我使用gem 'selenium-webdriver', '2.35.1'gem 'capybara', '2.1.0'。现在我的测试因为javascript而失败了,我想即使我使用describe "signup form", js: true do,这也不应该与这个“选项”一起使用?
    • 您应该能够让它工作,尽管第一次就做好可能有点麻烦(例如,您需要转交交易或使用复杂的变通方法)。
    • 我试图将self.use_transactional_fixtures = false 放在我的describe .... end 中但没有成功:/ 你有什么例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    相关资源
    最近更新 更多