RspecでCapybaraを使ったテストが通らない
Q&A
Closed
解決したいこと
ユーザーの住所登録のテストが通らず困っています。
テストユニットはrspecを使用しています。
住所登録画面で住所の自動入力のためjquery.postal.jsを使用しています。
郵便番号、県、市区町村、町域、を入力していますが、
入力できないは町域のみです。
発生している問題・エラー
1.1) Failure/Error:
expect {
find('input[name="commit"]').click
}.to change{ User.count }.by(1)
expected `User.count` to have changed by 1, but was changed by 0
該当するソースコード
describe 'ユーザー新規登録' do
before do
visit new_user_path
fill_in 'user_address[name]', with: 'test'
fill_in 'user_address[email]', with: 'test@example.com'
fill_in 'user_address[password]', with: 'password'
fill_in 'user_address[password_confirmation]', with: 'password'
fill_in 'user_address[postcode]', with: '1111111'
select '東京都', from: 'user_address[prefecture]'
fill_in 'user_address[city]', with: '台東区'
fill_in 'user_address[house_number]', with: '123-3'
end
context '登録成功' do
before do
ActionMailer::Base.deliveries.clear
end
it '仮登録画面へ遷移' do
expect {
find('input[name="commit"]').click
}.to change{ User.count }.by(1)
expect(ActionMailer::Base.deliveries.size).to eq(1)
expect(current_path).to eq('/users/done')
user = User.last
expect(user.activated).not_to eq be_truty
end
end
例)
jQuery(document).on('input', '#address_postcode', () => {
$('#address_postcode').jpostal({
postcode : [
'#address_postcode'
],
address: {
"#address_prefecture": "%3",
"#address_city": "%4",
"#address_house_number": "%5%6%7",
},
})
})
end
自分で試したこと
<div class="form-template">
<%= f.label :house_number, "町域・番地", class:"form-label" %><p>[必須]</p>
<div class="eg" >例:旭町1-1</div>
<% if @user.errors.include?(:house_number) %>
<div class="form-alert"><%= @user.errors.full_messages_for(:house_number).first %></div>
<% end %>
<%= f.text_field :house_number, class:"form-control", placeholder: "町域・番地", id: "address_house" %>
</div>
ビューでidを変更して自動入力を無効にすると
テストは通ります。
以上になります。
お力をお貸しください。
よろしくお願いします。
0