J'utilise Deversa en combinaison avec Test :: Unité sur l'un des projets que je travaille. La question que je rencontre est que j'ai récemment changé ceci: à ceci: p> précédemment, mes tests (passant) ressemblait à ceci: p> aussi loin que je peux le dire, il n'y a pas de paramètre à dû_validate_presence_of code> qui entraînera ce test de continuer à passer avec le changements spécifiés ci-dessus. À court d'abandon de l'abandon lors du test de l'exigence de : attribut_two code>, existe-t-il quelque chose autour de cela? P> p>
4 Réponses :
Dans ce passé, je viens d'utiliser une petite coutume doit bloquer pour contourner ce problème:
should "require :attr_two on update" do
mm = Factory(:my_model)
mm.attr_two = nil
mm.save
assert_equal false, mm.valid?
assert_equal("can't be blank", mm.errors.on(:attr_two))
end
J'ai essayé une solution similaire à ce que suggéra TsdBrown. Ce type de test passe lorsque j'ai: mais le test échoue si je change le modèle à:
p>
Dans RSPEC, vous pouvez procéder comme suit:
describe MyModelTest do
describe "validations" do
should_validate_presence_of :attribute_one
context "on update" do
subject { FactoryGirl.create(:my_model_test) }
should_validate_presence_of :attribute_two
end
end
end
Qu'en est-il de quelque chose comme ça? (Pour Devraitha-Matchers-3.1.1 Code>) subject { FactoryGirl.build(:your_model) }
it { is_expected.to validate_presence_of(:attribute_one) }
it { is_expected.to validate_presence_of(:attribute_two).on(:update) }