【RSpec】컨트롤러의 인스턴스 변수를 테스트로 사용하고 싶을 때 【assigns는 비추천】
일단 컨트롤러 테스트 자체는 deprecated가 되지 않으므로 assigns는 사용할 수 있지만 rails-controller-testing이라는 gem을 설치해야합니다.
그러나 이것은 어디까지나 기존 프로젝트에 대한 구제책으로, 새로운 프로젝트에서 assigns를 사용하는 것은 추천할 수 없습니다. (부차 이유는 모릅니다. 알고 계신 분이라면 알려주세요 )
↑ @ j 치토 님으로부터 코멘트 받았습니다. 감사합니다!
간단히 말하면, Rails의 태생의 부모가, 「그만하자」라고 하기 때문입니다. (학의 한 목소리??)
자세히 알고 싶은 분은 코멘트란을 봐 주세요
대신,
controller.instance_variable_get("@hoge")
라는 것을 사용하여 인스턴스 변수를 얻을 수 있습니다.
코드 예
최근에 쓴 패스워드 리셋 처리의 테스트를 일부 발췌해 왔습니다.
password_resets_request_spec.rbRSpec.describe 'PasswordResets', type: :request do
let(:user) { create(:user) }
describe 'パスワードリセット編集画面へのアクセス' do
context '不正なメールアドレスだったとき' do
it 'userはパスワード再設定ページへリダイレクトされること' do
post password_resets_path, params: { password_reset: { email: user.email } }
user = controller.instance_variable_get('@user')
get edit_password_reset_path(user.reset_token, email: '')
expect(flash[:danger]).to be_truthy
follow_redirect!
expect(request.fullpath).to eq '/password_resets/new'
end
end
↑의 코드에서는 reset_token 속성에 액세스하고 싶었기 때문에, 그 때문에 create 액션의 @user 라고 하는 인스턴스 변수를 취득하고 있다고 하는 느낌입니다.
또, 이쪽은 더 좋은 쓰는 방법이 있다(시스템 스펙) 것을, @ j 치토씨로부터 가르쳐 주셨으므로, 후일 이쪽에 추기해 가고 싶습니다!
끝까지 읽어 주셔서 감사합니다!
최근 개인 개발 앱 배포에 필사적이고 조금 짧습니다
배포가 끝나면 다시 기사를 썼다고 생각합니다! ! 잘 부탁드립니다.
Reference
이 문제에 관하여(【RSpec】컨트롤러의 인스턴스 변수를 테스트로 사용하고 싶을 때 【assigns는 비추천】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kiyo_Karl2/items/666279952eb40976c9f6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
RSpec.describe 'PasswordResets', type: :request do
let(:user) { create(:user) }
describe 'パスワードリセット編集画面へのアクセス' do
context '不正なメールアドレスだったとき' do
it 'userはパスワード再設定ページへリダイレクトされること' do
post password_resets_path, params: { password_reset: { email: user.email } }
user = controller.instance_variable_get('@user')
get edit_password_reset_path(user.reset_token, email: '')
expect(flash[:danger]).to be_truthy
follow_redirect!
expect(request.fullpath).to eq '/password_resets/new'
end
end
최근 개인 개발 앱 배포에 필사적이고 조금 짧습니다
배포가 끝나면 다시 기사를 썼다고 생각합니다! ! 잘 부탁드립니다.
Reference
이 문제에 관하여(【RSpec】컨트롤러의 인스턴스 변수를 테스트로 사용하고 싶을 때 【assigns는 비추천】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kiyo_Karl2/items/666279952eb40976c9f6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)