2012-06-11 3 views
1

Используя minitest, как лучше всего протестировать этот метод build_plan?Метод тестирования Rails-контроллера с minitest

Моя текущая попытка - проверить, что @ account.plan получает набор, но я не могу понять, как это сделать. Это то, что я должен делать, или что-то еще?

accounts_controller.rb

class AccountsController < ApplicationController 

    before_filter :build_plan, :only => [:new, :create] 

    def build_plan 
    redirect_to '/app/signup' and return unless @plan = SubscriptionPlan.find_by_name(params[:plan]) 
    @plan.discount = @discount 
    @account.plan = @plan 
    end 
end 

account_integration_test.rb

require 'minitest_helper' 

describe "Account integration" do 

    before do 
    @account = Factory.build(:account) 
    end 

    def fill_in_info 
    fill_in 'First name', :with => @account.admin.first 
    fill_in 'Last name', :with => @account.admin.last 
    fill_in 'Email', :with => @account.admin.email 
    end 

    describe "register" do 
    it "should set plan" do 
     visit signup_path(:plan => "small_group") 
     fill_in_info 
     click_button 'Create Account' 
     @account.plan.must_be_kind_of SubscriptionPlan #this doesn't work -- @account.plan is nil 
    end 
    end 
end 

ответ

0

Для приемочных испытаний убедитесь, что у вас есть правильный (предположительно Капибара) DSL включены в 'minitest_helper', например,

class MiniTest::Spec 

    include Capybara::DSL 
    ... 
end 

Стоит прочитать несколько других сообщений StackOverflow, чтобы получить правильную настройку помощника. Этот номер Has anyone used Minitest::Spec withing a Rails functional test? был полезен для меня.

Вот суть моего тестового помощника для функциональных тестов (я еще добавить модуль Капибара, как указано выше) https://gist.github.com/2990759

Смежные вопросы