문제

예를 들어, 내가 있다고 가정 해 봅시다 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를 사용하여 사양하려면 객체 API를 사용해야하기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top