Rspec 2.0을 사용하고 있습니다. 범위가 어떻게 작동하는지 이해하지 못했습니다 ... 어떻게 든 블록의 변수를 읽을 수는 있지만 업데이트 할 수는 없습니까? 그게 왜?인스턴스 변수 및 Rspec 2.x와 관련된 문제
2
A
답변
1
이것은 실제로 루비의 속성이며 RSpec 자체는 아닙니다. before 블록은 각 블록이 실행되기 전에 호출되는 콜백입니다. 변수가 blah
으로 인스턴스화되는 방식입니다. 두 번째 테스트에서 before 블록이 다음 테스트를 위해 다시 호출 될 때 정의가 재정의되도록 정의했습니다. the RSpec book에 따르면
2
, before(:all)
:
는 ... 객체의 그 자신의 인스턴스에서 한 번만 실행됩니다,하지만 인스턴스 변수는 예 을하는 각 인스턴스에 복사됩니다 운영. 일반적으로 을 사용하는 데주의해야 할 단어가 있으므로 예제를 각각 에서 완전히 분리하여 실행하고 싶습니다. 예를 통해 상태를 공유하는 즉시 예상치 못한 일이 발생하기 시작합니다.
예에서 각 테스트가 실행되기 전에 @blah
이 복사되므로 할당 된 값이 예제에서 다른 것으로 옮겨지지 않습니다. 이 (에어 코드) 같은 것을하고 싶지처럼
보인다 :
it "gets a token" do
@token = OAuth.some_method_that_returns_a_token
end
it "uses that token to access some OAuth feature" do
result = OAuth.some_feature(@token)
result.should be_something_something
end
이 아닌 코드로, OAuth를의 테스트와 같은 냄새가 난다. 당신은 some_feature
방법 (더 많은 공기 코드) 밖으로 스텁 고려해야합니다
it "responds in some way when I use a valid token" do
@token = mock('token')
OAuth.should_receive(:some_feature).with(@token).and_return("success")
result = my_code_which_uses_ouath(@token)
result.should == "success"
end
0
저도 같은 문제로 실행을 내가 값을 변경하는 해시와 그것을 해결 : 이동이 문서 발견
describe "carry over value" do
let (:global) { Hash.new }
before :all do
global[:var1] = "foo"
end
it "should be foo" do
global[:var1].should == "foo"
end
it "set to bar" do
global[:var1] = "bar"
global[:var1].should == "bar"
end
it "should still be bar" do
global[:var1].should == "bar"
end
end
관련 문제
- 1. Rspec 1.3.x와 Rspec 2 모두 사용
- 2. Rspec 및 'before_validation'콜백 문제
- 3. RSpec 및 만성 문제
- 4. struts 2 액션 클래스 인스턴스 변수 초기화
- 5. 정적 변수 PHP와 관련된 문제
- 6. 문자열 할당 및 인스턴스 변수
- 7. Seam 2.x와 Hibernate 3.5?
- 8. Rspec : 인스턴스 변수의 테스트 지정
- 9. 메모리 관리 및 인스턴스 변수?
- 10. touchesMoved 및 drawRect와 관련된 문제
- 11. Jquery AJAX 및 2 개 이상의 변수와 관련된 문제
- 12. 1 vbs에서 2 명령과 관련된 문제
- 13. XPSDocumentWriter 및 PrintDialog.PrintDocument와 관련된 문제
- 14. RoR과 RSpec : 접근자를 정의하지 않고 컨트롤러 인스턴스 변수에 액세스하는 방법?
- 15. 인스턴스 변수
- 16. Heroku 및 PHP와 관련된 문제
- 17. Sinatra 및 Heroku와 관련된 문제
- 18. 관련된 (belongs_to) 관계에 대한 RSpec 스텁 및 모의도
- 19. Hibernate/JPA 쿼리 및 카테고리에 관련된 문제
- 20. Rails + RSpec 문제
- 21. Java. 인스턴스 변수 길이
- 22. 관련된 개체를 요청하고 인스턴스 변수에 넣으시겠습니까?
- 23. android 1.x와 2.x의 주요 차이점
- 24. rspec 명령 줄 변수 입력
- 25. ActiveScaffold로 인스턴스 변수 설정하기
- 26. 파이썬 - 인스턴스 변수 액세스
- 27. Omniauth Rspec 테스트 문제
- 28. Rspec 부분 부분 문제
- 29. Objective-C의 속성 및 인스턴스 변수
- 30. 인스턴스 변수 및 인수로 link_to 사용
오늘 밤 테스트를 통해 인스턴스, 클래스 및 전역 변수를 추적하는 방법을 자세히 설명합니다. http://brentlavelle.wordpress.com/2011/04/04/rspec-and-instance-variables/ –