Question

Par exemple, disons que j'ai un modèle Question, qui a les champs booléens answered et closed. Comment puis-je tester le comportement d'un should be read only when marked as answered Question à l'aide RSpec? Cela semble que c'est le comportement du modèle, mais je ne suis pas sûr de savoir comment tester mieux il. Dois-je utiliser un filtre avant de ce comportement, et en ajoutant une erreur disant que vous ne pouvez pas modifier une réponse à votre question? Ou est-il une meilleure façon de le faire? Je ne RSpec apprentissage et BDD.

Était-ce utile?

La solution

dépend la façon dont vous avez besoin travailler, mais ...

describe Question do
  it "should be read only when marked as answered" do
    question = Question.new(:title => 'old title')
    question.answered = true
    question.save

    # this
    lambda {
      question.title = 'new title'
    }.should raise_error(ReadOnlyError)

    # or
    question.title = 'new title'
    question.save
    question.title.should == 'old title'

    # or
    quesiton.title = 'new title'
    question.save.should be_false
  end
end

Ou peut-être que vous voulez que l'erreur soit soulevée lors de l'enregistrement? Ou peut-être il n'y a pas d'erreur et juste ne change pas en silence la valeur? Il vous est à la façon dont vous voulez la mettre en œuvre, mais la méthodologie est la même.

  1. Configurez vos objets dans l'état que vous voulez les spec
  2. Assurez-vous que vos objets dans cet état font ce que vous attendez

configurer une réponse à votre question, puis voir si vous pouvez changer ses données. Si vous ne pouvez pas, SPEC puis passé. Il est à vous comment vous voulez travailler le comportement de votre modèle. Et la grande chose au sujet BDD est vous penser à cette première interface, puisque vous devez réellement utiliser une API d'objets afin de spec dehors.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top