3

我对测试非常陌生,所以我不确定我应该在这里调试什么。

也就是说,我有两种不同的用户类型:作者和读者,它们是用户的子类。

他们都可以在我的应用程序中正常注册,并且读者的测试工作没有任何问题。

Authors 的注册表单包括一个 Stripe 支付表单 - 并在提交表单之前远程调用 Stripe 的 API。

这是测试的样子:

require 'spec_helper'

feature 'Author sign up' do
  scenario 'author can see signup form' do
    visit root_path
    expect(page).to have_css 'form#new_author'
  end
  scenario 'user signs up and is logged in' do
    visit root_path
    fill_in 'author[email]', :with => 'author@example.com'
    fill_in 'author[password]', :with => '123456'
    fill_in 'author[password_confirmation]', :with => '123456'
    fill_in 'author[name]', :with => 'joe shmoe'
    fill_in 'author[zipcode]', :with => '02021'
    fill_in 'card_number', :with => '4242424242424242'
    fill_in 'card_code', :with => '123'
    select "1 - January", :from => 'card_month'
    select "2014", :from => 'card_year'
    find('.author_signup_button').click
    expect(page).to have_css '.author_menu'
  end
end

此测试与 Reader 测试之间的唯一区别是信用卡表格。

处理此帐户创建的控制器如下所示:

  def create
    @author = Author.new(params[:author])
    if @author.save_with_payment
      sign_in @author, :event => :authentication
      redirect_to root_path, :notice => "Thanks for signing up!"
    else
      render :nothing => true
    end
  end

如果我在这里没有else,测试会很快失败,说它缺少模板。这意味着它没有通过“save_with_payment”方法,该方法支持表单永远不会命中条纹的想法。

错误只是说:

**Failure/Error: expect(page).to have_css '.author_menu'
expected css ".author_menu' to return something**

这在我与条带集成之前有效 - 所以我确信它与 ajax 调用有关。

我应该做些什么来支持ajax?

4

1 回答 1

4

答案是在测试中使用 :js => true :

scenario 'user signs up and is logged in', :js => true do

这会强制测试使用 selenium 运行,并使用浏览器。

于 2013-06-19T00:52:04.680 回答