2015-04-01 63 views
1

我簡單activeadmin類,看起來像這樣:測試activeadmin類的最佳方法是什麼?

ActiveAdmin.register Post do 
    actions :index 

    index do 
    index_columns 
    end 

    csv do 
    index_columns 
    end 

    def index_columns 
    column "Id" do |sp| 
     sp.id 
    end 
    end 
end 

如何將最好的測試此代碼?寫一些集成規格與水豚或者也許有其他方式?

回答

1

測試寶石功能背後的一般想法 - 你不測試它

寶石(通常)已經過測試。

+2

您可以測試您自己的自定義配置。你用活動的管理員dsl寫了一些東西,每次都不一樣,所以你測試的確切。特別是當你在控制器中有自定義邏輯時。 – Fedcomp 2016-07-01 08:25:16

+1

@Fedcomp我想你會從思考我寫的東西中受益。我會再去:**你不測試寶石PERIOD:)**你測試你的邏輯(希望),但它與寶石無關。測試寶石類意味着與寶石的內部相混淆 - 做這件事太糟糕了。 – 2016-07-01 08:28:57

+0

測試你的OWN邏輯(這基本上是任何使用dsl)意味着你的功能不會中斷。 「期間」 – Fedcomp 2016-07-01 10:40:48

0

我同意安德烈,但需要爲此工作。以下是我如何測試csv部分。

@csv_doc = StringIO.new  

    allow_any_instance_of(ActiveAdmin::ResourceController).to receive(:stream_resource) do |aa_controller| 
    receiver = [] 
    # it's ok to mock this because it's literally their code: https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_controller/streaming.rb#L38 
    aa_controller.class.active_admin_config.csv_builder.build(aa_controller, receiver) 
    receiver.each do |fees_as_csv| 
     @csv_doc << fees_as_csv 
    end 
    end 


    @csv_doc.rewind 
    csv_string = @csv_doc.readlines.join 
    csv = CSV.parse(csv_string, headers: true).map(&:to_hash) 

    expect(csv[0]["FIGURING THIS OUT"]).to eq "SUCKED" 
相關問題