DonutWorks / Ari

0 stars 0 forks source link

message & response spec #295

Closed minhyeok4dev closed 10 years ago

minhyeok4dev commented 10 years ago

273 중 일부

shaynekang commented 10 years ago

수고하셨습니다~

단위테스트는 코드의 퀄리티를 검증하는 역할도 맡지만, 코드의 명세(Spec)를 대신하는 역할도 맡고 있습니다. 단위테스트가 있으면 코드에 관한 문서나 주석이 없어도 동작 원리를 이해할 수 있죠.

저라면 이렇게 작성할 것 같습니다.

describe "#created_at_sorted_desc" do
  it "should descending by created_at" do
    now = DateTime.now

    message1 = Message.create!(content: "message1", created_at: now - 1.day)
    message2 = Message.create!(content: "message2", created_at: now - 3.day)
    message3 = Message.create!(content: "message3", created_at: now - 2.day)

    expect(Message.created_at_sorted_desc).to eq([message1, message3, message2])
  end
end

이 코드는

  1. 레일즈 모델의 order(created_at: :desc)의 의미를 모르는 사람도 쉽게 이해할 수 있습니다.
  2. 정확하게 몇 개의 인스턴스가 어떻게 정렬되는지 명시적으로 보여줍니다.(이전에는 10개를 무작위로 만들었죠.)
  3. 테스트가 실패했을 경우, 어떻게 정렬이 잘못되었는지 쉽게 알 수 있습니다.

앞으로도 다른 사람들이 이 테스트를 보고 동작 원리를 이해할 수 있도록 노력해보세요. ㅎㅎ 이상입니다. 수고하셨습니다~

angdev commented 10 years ago

윽.. 찔리네요ㅠㅠ 제 테스트 코드 되게 난잡한데 ㅠㅠ

shaynekang commented 10 years ago

ㅋㅋ 조만간 날 잡고 싹 다 고쳐야죠.(..)