RSpec에서 반비밀 `within` 매처 사용

2901 단어 rubyrspec
때로는 비결정적 값에 대한 어설션을 작성하는 것이 까다로울 수 있지만 특히 시간 작업을 할 때 무시할 수 있는 양으로 깜박입니다.
나는 첫 번째 방어선이 시간을 동결하는 것이어야 한다는 데 동의하지만 때로는 선택 사항이 아닙니다. "fuzzy"within 매처를 입력합니다.

# bad
is_expected.to(
  be < execution_start.since(5.seconds)
  .and(be >= execution_start)
)

# good
is_expected.to be_within(5.seconds).of(execution_start)


Docs on this matcher은 다소 제한적이며 be_ 부분을 생략하여 컬렉션 및 인수에서도 사용할 수 있다는 점을 언급하지 않습니다.

is_expected.to(
  change { record.field }.to(within(5.seconds).of(some_time))
)

expect(SomeClass).to(
  have_received(:call)
  .with(stamp: within(5.seconds).of(some_time))
  .once
)

좋은 웹페이지 즐겨찾기