[ruby] rspec에서 테스트 그룹을 비활성화 하시겠습니까?
나는 describes
클래스와 그 안에 contexts
다양한 it
블록을 가진 다양한 테스트 사양 을 가지고 있습니다.
context
일시적으로 비활성화 할 수있는 방법이 있습니까?
비활성화하고 싶은 항목의 pending "temporarily disabled"
맨 위에 호출을 추가해 보았습니다 context
. 사양을 실행할 때 보류에 대한 내용을 확인했지만 나머지 테스트를 계속 실행했습니다.
이것이 내가 가진 것입니다.
describe Something
context "some tests" do
it "should blah" do
true
end
end
context "some other tests" do
pending "temporarily disabled"
it "should do something destructive" do
blah
end
end
end
그러나 내가 말했듯이 보류중인 전화 아래에서 테스트를 계속했습니다.
검색을 통해 rspec 작성자 (?)가 내가 실행중인 rspec 2에서 가능하다고 말하는 메일 링리스트 스레드 로 이동했습니다. 나는 그것이 작동했다고 생각하지만 다음 테스트를 모두 비활성화하는 원하는 효과가 없었습니다 pending
. 전화 를 보았을 때 생각하는 것입니다 .
대안이 있습니까 아니면 내가 잘못하고 있습니까?
답변
RSpec 3 을 사용하여 사양 트리를 비활성화하려면 다음을 수행 할 수 있습니다.
before { skip }
# or
xdescribe
# or
xcontext
출력에 표시 되는 skip 메시지를 추가 할 수 있습니다 .
before { skip("Awaiting a fix in the gem") }
와 RSpec에 2 :
before { pending }
답변
제외 필터를 사용 합니다 . 해당 페이지에서 : 귀하의 spec_helper.rb
(또는 rails_helper.rb
)
RSpec.configure do |c|
c.filter_run_excluding :broken => true
end
테스트에서 :
describe "group 1", :broken => true do
it "group 1 example 1" do
end
it "group 1 example 2" do
end
end
describe "group 2" do
it "group 2 example 1" do
end
end
“rspec ./spec/sample_spec.rb –format doc”를 실행할 때
그러면 출력에 “group 2 example 1″이 포함되어야합니다.
그리고 출력에는 “그룹 1 예제 1″이 포함되지 않아야합니다.
출력에는 “그룹 1 예 2″가 포함되지 않아야합니다.
답변
이것에 대해 어떻게 생각하는지보십시오 :
describe "something sweet", pending: "Refactor the wazjub for easier frobbing" do
it "does something well"
it "rejects invalid input"
end
“잠시 동안”무언가를 비활성화 할 때 보류중인 항목에 대한 이유를보고 싶습니다. 주석이나 제외 된 예제 / 파일에 묻히지 않고 정기적으로 표시되는 작은 주석 / TODO 역할을합니다.
또는 로 변경 it
하는 것은 빠르고 쉽지만 해시 구성을 선호합니다. 모든 실행 문서를 제공하고 드롭 인 (설명 / 컨텍스트 /이를 변경하지 않으므로 나중에 다시 사용할 내용을 결정해야 함)이며 결정이 내려 지거나 차단기가 제거되면 쉽게 제거됩니다. .pending
xit
이것은 그룹 및 개별 예제에 대해 동일하게 작동합니다.
답변
다른 것. https://gist.github.com/1300152
xdescribe, xcontext, xit을 사용하여 비활성화하십시오.
최신 정보:
rspec 2.11부터 기본적으로 xit를 포함합니다. 그래서 새로운 코드는
# put into spec_helper.rb
module RSpec
module Core
module DSL
def xdescribe(*args, &blk)
describe *args do
pending
end
end
alias xcontext xdescribe
end
end
end
용법
# a_spec.rb
xdescribe "padding" do
it "returns true" do
1.should == 1
end
end
답변
설명 대신 보류를 사용하십시오. 블록이 다음과 같은 경우 :
context "some other tests" do
it "should do something destructive" do
blah
end
end
다음과 같이 전체 블록을 건너 뛸 수 있습니다.
pending "some other tests" do
it "should do something destructive" do
blah
end
end
답변
describe "GET /blah" do
before(:each) { pending "Feature to be implemented..." }
it { expect(page).to have_button("Submit") }
it { expect(page).to have_content("Blah") }
end
답변
코드에서 무슨 일이 일어나고 있는지 설명하기 위해. 당신이 가지고있는 곳을 포함하여, 시작하는 동안 파일이로드 될 때 평가를 받고 실행됩니다. 그러나 테스트가 실행될 때 실행되어야합니다. 이것이 답변이 pending
(RSpec 2) 또는 skip
(RSpec 3)을 before
블록에 넣도록 제안한 이유 입니다.