2015-04-01 64 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" 
相关问题