2017-02-10 11 views
0

Это не проблема, я просто хотел убедиться, что этот код имеет эффект для тестирования, который, как я думаю, имеет. Я хочу иметь тест, который строит/создает структуру через фабрику и проверяет, действительно ли набор изменений действителен, так же как и сгенерированный по умолчанию тест. Таким образом, мои заводы также проверяются на получение достоверных данных.Тестирование/проверка заводских изменений и повторное тестирование схемы в 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 фабрикой build(: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 репо, а также для перекрестных ссылок.

+0

Эти два теста не равны. Если я правильно помню, ExMachina не использует ревизии для построения структур, поэтому эти тесты не работают одинаково. –

ответ

1

Документы ExMachina имеют функцию под названием params_for, которые генерируют карту атрибутов. Таким образом, тест может быть добавлен в дополнение к те, которые создаются генераторами модели оснований Phoneix.

test "changeset with valid factory" do 
    changeset = User.changeset(%User{}, params_for(:user)) 
    assert changeset.valid? 
    end 

 Смежные вопросы

  • Нет связанных вопросов^_^