これは問題ではありません。私は、このコードがテストしていると思っていることを確認したかっただけです。私はファクトリを介して構造体を構築/作成し、チェンジセットが有効であることを確認するテストをしたいと思います。このように私の工場も有効なデータを生成するためにテストされます。ExMachinaの工場チェンジセットと反復可能なスキーマテストのテスト/検証
@valid_attrs %{
email: "[email protected]",
first_name: "some content",
last_name: "some content",
password: "some content",
password_hash: "some content",
username: "some content",
mobile: "1112223333"}
@invalid_attrs %{}
test "changeset with valid attributes" do
changeset = User.changeset(%User{}, @valid_attrs)
assert changeset.valid?
end
それは、このような工場で書き直すことができ:例えば、構造体のチェンジセットを作成し、データを検証するための属性のマップを使用して、このデフォルトのテストが
?
test "changeset with ExMachina Factory attributes" do
user = build(:user)
changeset = User.changeset(user,%{})
assert changeset.valid?
end
私は時々意味が混乱していると私はこれが取るべき正しい方向であることを、いくつかの明確化を得るために期待していた、エリクサーを勉強していたよう。属性の空のマップを渡しています。これは、build(:user)
ファクトリによって、変更セットが正しく検証されているために、すでにuser
に定義されているためですか?
私の次のステップは、Rails/Rspec/FactoryGirlで行ったようなものです。FactorySpecはモデルのそれぞれを構築し、モデルが正しく構築されたことを検証します。この例では、ファクトリ・スペックは各モデルを作成し、検証します。
#spec/models/factory.rb
FactoryGirl.factories.map(&:name).each do |factory_name|
describe "The #{factory_name} factory" do
it 'is valid' do
build(factory_name).should be_valid
end
end
end
#spec/models/post_spec.rb
require 'rails_helper'
RSpec.describe Post, type: :model do
end
#spec/models/user_spec.rb
require 'rails_helper'
RSpec.describe User, type: :model do
end
最後に、彼らのbuild/create
世代を検証するために、それぞれの工場を使用して、再現テストがすべての構造体というExUnitに仕様/テストを作成する方法上の任意の提案はありますか?
issue (198)は、相互参照のためにExMachinaレポで公開されています。
これらの2つのテストは等しくありません。私が正しく覚えていれば、ExMachinaはチェンジセットを使って構造体を構築しないので、これらのテストは同じように動作しません。 –