Dave가 이미 언급했듯이 제공된 코드는 레이크 작업이 아니라 RSpec 사양입니다.
하지만 여기서 진짜 문제에 집중하겠습니다.
기호가 비슷한 기능을 가진 다른 언어와 접촉 할 수 없다면 처음에는 쉽게 구하기가 쉽지 않습니다. 어떤 언어는 그것을 Atom이라고 부릅니다.
http://en.wikipedia.org/wiki/Symbol_(programming)
기호를 behing 생각은 인간적으로 읽을 수 있지만 계산 저렴 기본 유형을 제공하는 것입니다.
루비에서는 컴파일러/인터프리터가 심볼을 볼 때 심볼 유형의 객체를 만들어 메모리에 저장합니다.루비에서 심볼은 싱글 톤이므로 동일한 심볼을 다른 용도로 사용하면 똑같은 객체를 반환하므로 공간 대신 정말로 저렴하고 비교할 수 없을만큼 저렴합니다. 컨텐츠 대신 메모리 주소를 비교할 수 있기 때문입니다. 이 같은 두 개의 문자, 비교 예를 들어
는 : 전용 메모리 주소를 의미
:foo == :foo
당신은 거의 동일한 개체를 비교하고는 비교 될 필요가있다. 이제
, 당신은 두 문자열을 비교할 때 :
"foo" == "foo"
그것은 동일한 내용으로 문자열의 두 인스턴스를 생성하고, 그들이 동일한 확인하기 위해 문자열의 각 바이트를 비교할 필요가있다.
이 속성은 기호를 해시의 식별자 나 키에 유용하게 만듭니다.
이제 RSpec.
는 이제 다음 예를 보자 :
describe Authenticator do
let(:user) { Factory.create(:user))
it "authenticate" do
auth_user = subject.authenticate(user.login, user.password)
auth_user.should == user
end
end
Factory.create 사용하는 공장의 식별자로 기호를합니다. 여러분은 공장을 직접 정의 할 필요가 있습니다. 문자열을 사용할 수는 있지만 상징을 사용하는 것이 더 저렴하고 모범 사례이지만 솔직히 말해서 Factory.create를 수천 번 호출하지 않으면 별 차이가 없습니다. ,
- 방법은 사양 (IT 블록) 내에서 호출되어 처음으로,이 블록을 실행합니다 :
는하자가 실제로 몇 가지 작업을 수행하는 방법을 정의하는 것, 변수를 정의하지 않습니다 결과를 캐쉬하고 그것을 반환한다.
- 같은 사양 (블록) 내의 다른 모든 호출은 캐시 된 결과를 반환 할 것이다.
- 사양이 완료된 후에 캐시 된 결과를 삭제하기 때문에 다음에 다시 재평가된다. 전화, 다음 사양에
이렇게하면 필요한 경우에만 느슨하게 객체를 만들 수 있으며 상태 변경을 현재 사양으로 제한 할 수 있습니다.
RSpec은 기호를 특정 물건을 추상화하기 위해 생성되는 메소드 이름의 식별자로 기호를 사용하여보다 쉽게 사용합니다. RSpec은 테스트 스위트를 만들기 위해 메타 프로그래밍을 사용하는 BDD 도메인 특정 언어 일뿐입니다. 당신은 아마 이런 테스트 케이스를 쓰지한다
class AuthenticatorTest < Test::Unit::TestCase
def user
return @user if @user
@user = Factory.create(:user)
end
def subject
return @subject if @subject
@subject = Authenticator.new
end
def teardown
@subject = nil
@user = nil
end
def test_authenticate
auth_user = subject.authenticate(user.login, user.password)
assert_equal auth_user, user
end
end
참고하지만, (약)는 RSpec에는 무엇을 보여
같은 문제
는 다음 테스트 케이스 달성 할 수있다.
도움이 되었기를 바랍니다.
나는 도움이되지는 않지만 소스 코드 (https://github.com/rspec/rspec-core/blob/v2.12.2/lib/rspec/core/let)를 살펴 본다.rb # L31)는'let'이 주어진 이름을 가진 메소드를 정의 할 것이라는 것을 보여줍니다. 그래서 제 생각에는 변수에 심볼을주는 것이 합리적입니다. 따라서 메소드는 변수가 아니라 적절하게 명명됩니다. – pjam