RSpec에서 사용하는 멋진 기술은 Shoulda와 Shoulda-context를 사용하는 프로젝트에서도 사용하고 싶습니다. 그러나 그것이 가능한지 나는 모른다. 이것을 할 수있는 방법이 있습니까?RSpec의`let`과 같은 설정 값을 shoulda 문맥에서 오버라이드하는 법?
내가 원하는 것 : 중첩 된 컨텍스트에서 let
절을 참조하는 외부 컨텍스트에서 setup
(before
) 블록을 정의하십시오. 이렇게하면 내부 컨텍스트가 외부에서 참조되는 값을 구성 할 수 있습니다. setup
setup
은 여전히 내부 컨텍스트에서 DRY가 될 수 있습니다.
describe Thing do
before do
# Notice that `user` isn't defined here--it's defined in `let` blocks
# in nested contexts below.
login_as user
# Assume there's lots more code here that I would like to keep
# DRY across contexts.
end
context "when logged in as an admin" do
# THIS IS THE MAGIC RIGHT HERE:
let(:user) { Factory(:user, role: "admin") }
it "should ..." ...
end
context "when logged in as a normal user" do
# THIS IS THE MAGIC RIGHT HERE:
let(:user) { Factory(:user) }
it "should ..." ...
end
end
가 요약하면 : : 방법 -
RSpec에 예제 (내 실제 예제 내가 복제하지 않을 before
블록에 더 많은 코드가 있다고 가정 해주십시오 예는 간단하다) shoulda-context와 Test :: Unit으로 이것을 할 수 있습니까?
작동하지 않았다 나는 이미 시도 몇 가지 :
def
각 서브 컨텍스트에서 메서드를 재정의 할 수 있습니다.before_should
각 하위 컨텍스트에서.
잘 작동합니다. 감사! –