2016-07-29 16 views
1

構成ファイルに基づいて動作がわずかに変更されるモデルがあります。コンフィギュレーションファイルは、理論上、クライアント用のアプリのインストールごとに変更されます。どうすればこれらの変更をテストできますか?例えばRailsでさまざまなアプリの設定をテストするにはどうすればよいですか?

...

# in app/models/person.rb 

before_save automatically_make_person_contributer if Rails.configuration.x.people['are_contributers_by_default'] 



# in test/models/person_test.rb 

test "auto-assigns role if it should" do 
    # this next line doesn't actually work when the Person#before_save runs... 
    Rails.configuration.x.people['are_contributers_by_default'] = true 
end 

test "won't auto assign a role if it shouldn't" do 
    # this next line doesn't actually work when the Person#before_save runs... 
    Rails.configuration.x.people['are_contributers_by_default'] = false 
end 

これらをデータベースに格納するために、彼らは一度設定されているが、私は私のアプリは、すべての下に動作することを確認する必要があるので、それは意味がありません。すべての環境で可能な設定。

答えて

1

この作業を行う方法は、automatically_make_person_contributerが実際にRails.configuration.x.people['are_contributers_by_default']の評価を実行するようにPersonクラスを書き換えることです。これは私のテストを幸せにし、技術的にアプリが動作する方法を変更しません:

# in app/models/person.rb 

before_save :automatically_make_person_contributer 

private 
    def automatically_make_person_contributer 
    if Rails.configuration.x.people['are_contributers_by_default'] 
     # do the actual work here 
    end 
    end 

しかし、これはアプリのプロセスの存続期間中に同じままとしている値を毎回確認されることを意味しますPersonクラスの作成時に一度だけチェックされるのではなく、Personが作成されます。

私の特定のケースでは、このトレードオフは問題ありませんが、他の人が私の質問に対する実際の答えを望むかもしれません。

関連する問題