shoulda-matchers을 사용하고 RSpec에의 새로운 expect syntax에 대한 올바른 형식은 무엇입니까?RSpec에 예상 했어야은-정합 구문
답변
다음과 같이 하나는 확실히 새로운 기대 구문으로 했어야-매처 (matcher)를 사용할 수 있지만 :
it 'should validate presence of :email' do
expect(subject).to validate_presence_of :email
end
또는 더 간결 미만 읽을 :이
it { expect(subject).to validate_presence_of :email }
한 - 라이너 should
형식을 matcher는 일반적으로 config.syntax == :expect
일 때도 2.14에서 명시 적으로 지원됩니다. should
이 같이 암시 적 주제와 함께 사용되는 경우 :
describe User
it { should validate_presence_of :email }
end
는 should
달리에 의존하는 Kernel
의 원숭이 패치에 의존하지 않습니다.
이것은 https://github.com/rspec/rspec-expectations/blob/master/Should.md에 덮여있다. 사실,이 문서에서는 위의 shoulda
정규 표현식을 사용하여이 예외를 설명합니다.
Using implicit `subject` with `expect` in RSpec-2.11 또한 it
대신 사용할 수있는 구성 옵션에 대해 설명합니다.
expect_it { to validate_presence_of :email }
업데이트 : RSpec에 3.0 (베타 2)로, 당신은 또한 사용할 수 있습니다 :
it { is_expected.to validate_presence_of :email }
첫번째 블록은'desribe User'에 둘러싸여있을 것입니다, 맞습니까? 그것이 3 개의 다른 선에 3 개의 선의 omparison와 같게 보이는 것에 따라. 그러나 그것은 아주 그것이 아니다. 그렇다면 첫 번째 코드 블록을 명확히하기 위해 추가 할 수 있습니다. –
@MichaelDurrant 예, 그렇습니다. 동의했다. 이것을 지적 해 주셔서 감사합니다. 답변이 업데이트되었습니다. –
누구든지 downvote가 무엇인지에 대해 알 수 있습니까? 이것이 "주로 의견을 바탕으로 한"것에 대한 가까운 득표와 관련이 있습니까? –
난 @ 피터 alfvin의 대답을 suplement에 대한 것입니다. 경우에 당신은 당신이 it
블록의 외부 :expect
을 사용할 수 없습니다 모델과 shoulda-matchers
과의 마이그레이션 자신을 테스트, 그렇게 쓸 수 없습니다 :
RSpec.describe ModelName, type: :model do
expect(subject).to belong_to(:user)
end
을 그리고 당신은 expection 얻을 것이다 :
`expect` is not available on an example group (e.g. a `describe` or `context` block).
을 하지만 올바른 버전은 다음과 같습니다
RSpec.describe ModelName, type: :model do
it { expect(subject).to belong_to(:user) }
end
미안 내가 관련하여 했어야 – trev9065
의미 투표 - 투 - 가까운 기반의 기반이되는 주로 의견에, I 올릴 때 ld는 "좋은 아이디어"인지 묻는이 특별한 경우는 관심사가 아닌 문제라는 사실에 근거한 설명이 있기 때문에 예외라고 주장한다. –
은 그것을 적절하게 만들기 위해 quesrion 세부 사항을 편집했습니다. –