とCollectionProxyは、私は非常に単純なデータ構造を有しています。私のテストでは、Capybara、minitest-rails、mocha(rspecなし)を使用しています。偽造のActiveRecord ::協会::カピバラ(レール)でモカ
Filter
のActiveRecord
のコレクションを適切にスタブするのには苦労しています。これは私が現在持っているものです:Array
にはpluck()
方法が自分ではないので、
require 'test_helper'
class TestExample < Capybara::Rails::TestCase
let(:user) { FactoryGirl.create(:user) }
def setup
# Create some mock filters:
f1 = Filter.new
f1.stubs(:id).returns(1)
f1.stubs(:user_id).returns(1)
f1.stubs(:title).returns("First Filter")
f1.stubs(:value).returns(123)
f2 = Filter.new
f2.stubs(:id).returns(2)
f2.stubs(:user_id).returns(1)
f2.stubs(:title).returns("Second Filter")
f2.stubs(:value).returns(456)
fake_filters = [f1, f2]
user.stubs(:filters).returns(fake_filters)
end
def test_user_has_correct_number_of_mocked_filters
assert_equal(user.filters.count, 2)
end
def test_users_mocked_filters_have_correct_ids
assert_equal(user.filters.pluck(:id), [1, 2]) # ERROR
end
end
第二の試験では、エラーがスローされます。
これはどのように達成されますか?私は、実際にはFilter
テーブルにレコードがあるかのようにテストを動作させたい。あなたも摘むと呼ばれるfake_filters
上のメソッドをスタブない限り
行うようにあなたは彼らがfactory_girl使用して構築する必要がありますので、私はそれを行うための別の方法がなければならない知っています。 –
Capybaraは統合/機能テストのためのものです。Capybara :: Rails :: TestCaseから派生したテストで何かを実際に嘲笑すべきではありません。その目的は実際のDBオブジェクトを含むスタック全体をテストすることです。 –