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) }