이 질문은 영어로 된 RSpec 예제 그룹 및 예제를 가장 잘 명명하는 방법에 관한 것입니다.RSpec 예제 그룹 이름 지정 (웹 응용 프로그램 용)
나는 (functionally equivalent 있습니다) 및 it
RSpec에, describe
, context
당신에게 완전한 문장을 제공 해야하는 것으로 알고 있습니다. 예를 들어,
describe "Log-in controller" do
context "with logged-in user" do
it "redirects to root" do
...
end
end
end
읽기 Log-in controller with logged-in user redirects to root
입니다. 굉장해. 내가 여기에 두 개의 안티 패턴을 볼
describe "blog post" do
describe "content" do
it "is displayed"
end
describe "comment" do
it "is displayed"
describe "editing" do
it "works" # successful comment editing
it "requires logged-in user" # error case 1
it "requires non-empty body" # error case 2
end
end
describe "comment form" do
it "works" # successful comment submission
it "requires valid email address" # error case 1
it "requires non-empty body" # error case 2
end
end
을 :
그러나 내가 ajaxy 페이지의 모든 구성 요소를 테스트 할 필요가 내 응용 프로그램에서
은 (카피 바라를 사용하여),이 같은 예를 들어 그룹이 경향중첩 된 설명은 문장으로 읽지 않습니다. 당연히 사람은의 것을 둘 수 있었다 :
describe "blog post" do describe "'s content" do it "is displayed" end end
또는 사람은 "블로그 포스트 :"후에 콜론을 둘 수 있었다. 또는 이상적으로, 나는
describe "blog post" do its "content" do it "is displayed" end end
을 작성하지만
its
는 속성 액세스에 대한 때문에 그것은 가능하지, 난 그냥 여기 문자열을 가지고있다."페이지 구성 요소"문제를 해결하는 더 좋은 방법이 있습니까?
기능의 경우 성공 사례 (의견 제출과 같은 기능)는
it "works"
으로 간단히 표시됩니다. 적어도 간결하고 간단합니다.it "can be submitted and causes a comment to be added"
보다 약간 더 바람직하다고 생각합니다. 그 이유는 저에게 명백한 어떤 것을위한 구술을 만들어야하기 때문입니다. 그러나 이것을하기에 더 좋고 더 자연스러운 방법이 있습니까?
예제 example-group;을 재구성하는 방법에 대한 제안)
흥미 롭습니다! 나는 당신의 예제에 의해 분리 된 것에 대해 확신 할 수 있을지 모르겠다. ":"제출 가능해야한다 "는 흥미로운 테스트는 아니며 (단지 버튼이 필요하다)"새로운 코멘트를 만든다. ","새로운 코멘트는 올바른 저자를가집니다 "등은 보통 코드를 복제하고 성능을 잃어 버리는 것만으로 분할 가능합니다 (실제로는 Selenium에 대해 상처를줍니다). 성공 사례를 위해, 저는 보통 KISS를 적용하고 기능에 대한 운동을하고, 걱정되는 것에 대해 무리한 기대감을 제시합니다. 필자는 스펙을 유지 보수 할 수있는 기능을 실제로 분리하지 못하고있다. –
의사 코드는 가이드로만 사용됩니다. '제출할 수 있어야합니다'는 '어떻게 분할해야하는지에 대한 예'였으며 '제출하여 의견을 작성하게했습니다'.제 요점은 각 테스트마다 다른 테스트 조건을 원한다는 것입니다. 설명에 '및'을 추가하기 시작하면 분리가 필요합니다. Silenium으로 테스트하는 경우 100 % 적용 범위를 권장하지 않습니다. 모델 및 컨트롤러 테스트를 통해 동등한 수준의 적용 범위를 달성 할 수 있습니다. 성능 및 복제가 걱정되면 이러한 문제를 피하기 위해 백그라운드 조건을 만드십시오. –
내 테스트를 분할하면 유지 관리가 더 쉬워 질 것이라고 저는 확신하지 못합니다. "의견을 제출하거나 JS를 통해 동적으로 추가되었는지 확인하십시오. 올바른 작성자가 있는지 확인하고 날짜가 있는지 확인하고 편집 할 수 있는지 확인한 다음 페이지를 다시로드 한 후 페이지에 계속 표시되어 있는지 확인하십시오." 당신은 실제로 그것을 여러 테스트들로 나누는 것을 주창합니다 (간결한 기대치를 갖는 것보다)? Btw, "배경 조건"이란 무엇입니까? ': speed => : 느린'종류의 메타 데이터? –