这不是问题,我只是想确保此代码对我认为正在进行的测试有影响。我想要通过工厂建立/创建结构的测试,并检查以确保变更集有效,就像默认生成的测试一样。这样我的工厂也可以生成有效的数据。在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
当我正在学习药剂,有时语义混乱,我希望能得到一些澄清,这是采取正确的方向。是否传递属性的空映射,因为它们已在工厂函数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
最后,是否有关于如何在ExUnit创建规范/测试重复测试,所有使用其各自的工厂结构,以验证其build/create
一代有什么建议?
我有一个issue (198)开放在ExMachina回购以及交叉引用。
这两个测试不相等。如果我没有记错,ExMachina不会使用变更来构建结构,所以这些测试不会以相同的方式工作。 –