Привет всем,
Проследив мой путь через исходный код, я наконец-то нашел решение для этого. Если вы используете factory_girl 1.3.2 (которая была последней версией на момент написания этой статьи), вы можете добавить следующий код в начало вашего файла factories.rb:
class Factory
def self.reset_sequences
Factory.factories.each do |name, factory|
factory.sequences.each do |name, sequence|
sequence.reset
end
end
end
def sequences
@sequences
end
def sequence(name, &block)
s = Sequence.new(&block)
@sequences ||= {}
@sequences[name] = s
add_attribute(name) { s.next }
end
def reset_sequence(name)
@sequences[name].reset
end
class Sequence
def reset
@value = 0
end
end
end
Затем в env.rb от Cucumber просто добавьте:
After do
Factory.reset_sequences
end
Я бы предположил, что если вы столкнетесь с той же проблемой в ваших тестах rspec, вы можете использовать rspecs после каждого метода.
В настоящее время этот подход учитывает только последовательности, определенные на фабрике, такие как:
Factory.define :specialty do |f|
f.sequence(:title) { |n| "Test Specialty #{n}"}
f.sequence(:permalink) { |n| "permalink#{n}" }
end
Я еще не написал код для обработки: Factory.sequence ...
Надеюсь, что это поможет всем другим разочарованным людям, которые не могут понять, почему на фабрике девушка уже не обеспечивает это. Может быть, я разберусь с проектом github и отправлю запрос на извлечение с этим исправлением, поскольку оно не меняет их внутреннюю функциональность.
-Эндрю