6
votes

Devrait: Tester Validates_presence_of: On =>: Mise à jour

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: xxx

à ceci: xxx

précédemment, mes tests (passant) ressemblait à ceci: xxx

aussi loin que je peux le dire, il n'y a pas de paramètre à dû_validate_presence_of 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 , existe-t-il quelque chose autour de cela?


0 commentaires

4 Réponses :


2
votes

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


0 commentaires

2
votes

J'ai essayé une solution similaire à ce que suggéra TsdBrown. Ce type de test passe lorsque j'ai:
xxx

mais le test échoue si je change le modèle à:
xxx < p> Il échoue parce que l'erreur: attr_two est [] au lieu de ["ne peut pas être vide"]


0 commentaires

2
votes

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


0 commentaires

7
votes

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


0 commentaires