【问题标题】:With capybara, how to use page.should render_template水豚,如何使用page.should render_template
【发布时间】:2011-08-30 20:29:10
【问题描述】:

我有以下测试:

  it "I can Sign Up with Facebook" do

    visit new_user_registration_path

    click_link_or_button 'Sign up with Facebook'

    # Validate
    page.should render_template("registrations/signup_connect_to_facebook.html.erb")

  end

在我得到的日志中:

Started GET "/users/auth/facebook/callback" for 127.0.0.1 at 2011-08-30 13:26:04 -0700
  Processing by AuthenticationsController#create as HTML
  Authentication Load (0.8ms)  SELECT "authentications".* FROM "authentications" WHERE "authentications"."provider" = 'facebook' AND "authentications"."uuid" = '13' LIMIT 1
AuthenticationsController - Route D
Rendered registrations/signup_connect_to_facebook.html.erb (0.7ms)
Completed 200 OK in 111ms (Views: 3.4ms | ActiveRecord: 2.7ms)
  SQL (0.3ms)  ROLLBACK

问题是测试失败:

 1) authentication flows I can Sign Up with Facebook
     Failure/Error: page.should render_template("registrations/signup_connect_to_facebook.html.erb")
     ArgumentError:
       @request must be an ActionDispatch::Request
     # ./spec/requests/authentication_requests.rb:54:in `block (2 levels) in <top (required)>'

Finished in 1.11 seconds
1 example, 1 failure

验证模板已呈现的正确方法是什么?谢谢

【问题讨论】:

标签: rspec devise rspec2 capybara


【解决方案1】:

我认为您遇到的问题是您混合了测试级别。

如果您想测试模板的渲染,请尝试进行正常的 rspec 控制器测试。

使用 Capybara,您应该断言渲染模板的结果而不是模板的实际渲染。

【讨论】:

    【解决方案2】:

    在水豚

    current_path.should == post_cmets_path(post)

    https://github.com/jnicklas/capybara#navigating

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多