0

Rails で Ajax 呼び出しを使用して、コントローラーのメソッドを呼び出しています。私の問題は、コード自体が正常に動作し、エラーが表示されないことです。私が得るコードをテストするとき

ActionView::MissingTemplate: Missing template branch/call_s ml], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "C:/home/Ruby/rails/showrooms/texting/app/views" * "C:/home/Ruby/rails/showrooms/texting/app/views/shared" * "C:/home/Ruby/rails/showrooms/texting/app/views"

これは私のコントローラーメソッドです。

  # Sends a SMS message to selected phone number. 
  # 
  def call_sms
    if current_associate    
      @text_number    = params[:phone_number]
      @text_message   = params[:text_message].to_s
      if !@text_number.empty? && !@text_message.empty?

        @sms = ShortMessagingService.new  
        if @sms.send(@text_number, @text_message)       
          @sms_message = "Status: #{@sms.sent?}"
        end
      else
       @sms_message = 'Phone number and text field cannot be blank.'
     end
   else
     @sms_message = 'You do not have perission for this feature.'
   end
 end

これがルートです

# Small Messaging Service rout. 
post 'call_sms' => 'branch#call_sms'
match 'call_sms' => 'branch#call_sms'

これは次の形式です。

<%= form_for :call_sms, url: {action: "call_sms"},  
    :method => :post, :remote => true, 
    :html => {:id => 'sms_form'} do |f| 
%> 
.
.
.
<% end %>

これは私のテストです

  test "Can send sms messages." do
    phone_number  = '18006388875'
    text_message  = "Hey this is a test. Don't text and drive."
    post :call_sms
    assert_response :ok
  end
4

1 に答える 1

1

フォームは ajax リクエストを実行していますが、テスト ケースはそうではありません。

の代わりにpost :call_sms、これを試してください:

xhr :post, :call_sms

これは、通常の投稿の代わりに ajax 投稿を送信するようにテスト ケースに指示します。

于 2013-09-27T19:39:44.657 に答える