このトピックについて少しグーグルで調べましたが、まだ混乱しています。
Zendesk API Ruby クライアントを使用してカスタム ヘルプ ページを作成していますが、ZendeskAPI::Ticket
リソースの作成をテストする必要がある段階にあります。次のコードは、spec/features ディレクトリにあります。フォームに有効な値を入力し、フォームを#create
アクションに送信します。かなり標準的でシンプルなもの。
require 'spec_helper'
feature 'ticket creation' do
scenario 'user creates new ticket' do
visit root_path
fill_in 'Name', with: 'Billybob Joe'
fill_in 'Email', with: 'joe@test.com'
fill_in 'Subject', with: 'Aw, goshdarnit!'
fill_in 'Issue', with: 'My computer spontaneously blew up!'
click_button 'Create Ticket'
expect(page).to have_content('Ticket details')
end
end
そして、これが Tickets コントローラーの関連部分です。このticket_valid?
メソッドは、オプション ハッシュの最小限の検証を提供しclient
、 のインスタンスですZendeskAPI::Client
。
def create
options = { subject: params[:subject], comment: { value: params[:issue] },
requester: params[:email], priority: 'normal' }
if ticket_valid? options
flash[:success] = 'Ticket created.'
@ticket = ZendeskAPI::Ticket.create(client, options)
redirect_to ticket_path(@ticket.id)
else
flash[:error] = 'Something went wrong. Try again.'
redirect_to root_url
end
end
問題は、テストを実行するたびに実際のチケットが Zendesk バックエンドで作成され、実際にチケットを作成せずにフォーム送信が成功するかどうかをテストしたいときに、後で手動で削除する必要があることです。
私の質問は、テストを実行するたびに Zendesk バックエンドで実際のチケットを作成せずに、チケット作成フォームをテストするにはどうすればよいですか?
グーグルで調べた結果、漠然とRackTestの使用について言及している記事やブログがありましたが、この種のことにはCapybaraをまったく使用しないことを提案しているものもあり、さらに混乱しています. 私はまだRSpecに比較的慣れておらず、APIを使用してRailsアプリを構築するのはさらに新しいので、明確な説明があれば素晴らしいでしょう.
前もって感謝します!!あなたは素晴らしいです。