كيف المواصفات من "للقراءة فقط" سلوك النموذج ؟

StackOverflow https://stackoverflow.com/questions/525805

  •  22-08-2019
  •  | 
  •  

سؤال

على سبيل المثال, دعونا نقول لدي Question نموذج يحتوي على منطقية المجالات answered و closed.كيف يمكنني اختبار سلوك هذا سؤال should be read only when marked as answered باستخدام RSpec?هذا يبدو أنه سلوك النموذج ، ولكن أنا غير متأكد من كيفية أفضل اختبار.يجب أن تستخدم من قبل مرشح لهذا السلوك ، مضيفا خطأ تقول أنه لا يمكنك تعديل أجاب على السؤال ؟ أو هل هناك طريقة أفضل للقيام بذلك ؟ أنا فقط التعلم RSpec و BDD.

هل كانت مفيدة؟

المحلول

يعتمد على كيفية كنت في حاجة إليها العمل ، ولكن...

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

أو ربما كنت تريد الخطأ أن تثار على حفظ ؟ أو ربما لا يوجد خطأ وهو فقط بصمت لا يغير القيمة ؟ الأمر متروك لكم كيف كنت ترغب في تنفيذ ذلك ، ولكن المنهجية هو نفسه.

  1. الإعداد الأشياء الخاصة بك في حالة كنت تريد أن المواصفات لهم
  2. تأكد من الكائنات في تلك الدولة لا ما كنت تتوقع

حتى إنه أجاب على السؤال ، ثم انظر إذا كان يمكنك تغيير البيانات.إذا كنت لا تستطيع ، ثم المواصفات مرت.الأمر متروك لكم كيف كنت تريد سلوك النموذج الخاص بك إلى العمل.و الشيء العظيم حول BDD هو رأيك حول هذه الواجهة الأولى منذ لديك فعلا استخدام الكائنات API من أجل المواصفات ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top