스트라이프 API를 사용하여 레일 애플리케이션을 테스트하려고합니다. 모델로 시작했기 때문에 Rspec을 사용하고 있습니다. 테스트하려는 모델은 거기에 bank_account.rb라고합니다. 나는이 기능을 테스트하기 시작했을 때테스트 기능에 API 요청이 포함되어 있습니다.
def create_bank_account(bank_token)
# make a Stripe request and save it in local variable
# save needed data in my bank_account table in my DB
end
, 나는 좋지 않아 그 내부 API 호출이 있음을 발견 : 인수 (bank_token)와 (create_bank_account)라는 함수의 의사는이 같은 것입니다입니다 나는 인터넷에 의존하지 않는 테스트가 필요하다. 그래서 검색 한 후에 나는 'StripeMock` 보석을 발견했다. 유용하고 Rspec과 함께 사용하기 시작했다. 그러나 내 자신이 다음과 같은 테스트를 작성했다.
it 'with valid bank_token` do
# create a double for bank_account
# using StripeMock to get a faked response for creating
# new bank_account
# expect the doube to receive create_bank_account
# function and response with saving the data inside the DB
end
하지만 난 사실은 내가 그것을 위조 create_bank_account 기능을 실행하지 않은, 그래서 내 질문은 것으로 나타났습니다이 작성 후 :
1- 어떻게 API 요청을 포함 기능을 테스트하지만, 기능 그 자체를 실행할 수 있습니다 그것을 위조하지 않습니까?
2 우리가 double과 stub을 사용할 때 많이 읽었습니다. 함수가 완료되지 않았을 때 함수가 완료되지 않았지만 함수가 이미 구현되어 있으면 API를 호출하는 함수와 같은 것을 피하기 위해 double을 사용해야합니까? 무엇보다도
스텁을 API 호출로 사용할 수는 있지만 함수 자체가 아닙니다.예를 들어 api가 Sendgrid.send()를 호출하면, Sendgrid.stub (: send) .with ('more_than', 'one_argument')에 의해 그만 쓴다. –