0

次のようなフォーム オブジェクトがあります。

class LeaderForm < UserForm
  feature Reform::Form::MultiParameterAttributes

  property :title
  property :gender
  property :phone_number
  property :date_of_birth, multi_params: true

  property :address, form: AddressForm # need to test this line

  validates :title, :gender, :phone_number, :date_of_birth, presence: true
end

が存在するかどうかをテストする機能仕様を作成するにはどうすればよいAddressFormですか?

他の「プロパティ」(タイトル、性別など)をテストするための作業仕様がすでにあります。

私は次のようなものを試しました

it 'must have the address form present' do
  expect(form.address).to include(AddressForm)
end

その出力は

  1) LeaderForm must have the address form present
       Failure/Error: expect(form.address).to include(AddressForm)

         expected #<AddressForm:0x007f89231c3280 @fields={"address1" => nil, "address2" => nil, "address3" => nil, "city" => ni...odel::Errors:0x007f89231c2b50 @base=#<AddressForm:0x007f89231c3280 ...>, @messages={}, @details={}>> to include AddressForm, but it does not respond to `include?`
         Diff:
         @@ -1,2 +1,41 @@
         -[AddressForm]
         +#<AddressForm:0x007f89231c3280
         + @_changes={},
         + @errors=
         +  #<Reform::Form::ActiveModel::Errors:0x007f89231c2b50
         +   @base=#<AddressForm:0x007f89231c3280 ...>,
         +   @details={},
         +   @messages={}>,
         + @fields=
         +  {"address1"=>nil,
         +   "address2"=>nil,
         +   "address3"=>nil,
         +   "city"=>nil,
         +   "postal_code"=>nil,
         +   "country"=>nil},

それはほとんどそこにあるように思えますが、完全ではありません。

私は一般的にRSpecに非常に慣れていないので、十分な情報を提供できなかったら申し訳ありません.

4

1 に答える 1

1

あなたが探していると思いますbe_a

it 'must have the address form present' do
  expect(form.address).to be_a(AddressForm)
end

be_RSpec は、 likebe_fooで始まる未知のマッチャーを like のメソッドにマップしますis_foo?。書くこともできます(あまりうまくいきません)

it 'must have the address form present' do
  expect(form.address.is_a? AddressForm).to be true
end
于 2016-08-03T13:00:32.817 に答える