Rails Rspec 重定向错误

Rails Rspec redirection error

currency 显示视图中,我有一个表单可以提交应该由 currency 控制器发送到 prediction 控制器的数据。但是,在我到达 prediction 控制器之前出现错误。

表格定义为:

<%=form_for @currency do |f| %>
    <%= f.label "Days" %>
    <div id="select_days" >
    <%= f.select(:prediction_days, options_for_select(1..30)) %>
    </div>
    <%= f.submit "Predict", class: "btn btn-primary" %>
<% end %>

controller有如下代码(执行打印,然后报错)

def update
    respond_to do |format|
      if @currency.update(currency_params)
        prediction = @currency.neural_network.predict
        p "getting prediction"
        redirect_to prediction

错误是:

Failure/Error: click_button 'Predict'
     ActionController::UnknownFormat:
       ActionController::UnknownFormat

当我以这种方式使用 RSpec 和 Capybara 进行测试时出现故障:

click_button 'Predict'

我不太确定为什么在 respond_to 块中没有定义格式时却有所有代码。该错误似乎解决了这个问题:ActionController::UnknownFormat,因为您没有定义格式(据我所知,因为您的 update 方法不完整)。

你真的需要respond_to吗?如果没有,试试这个:

def update
  if @currency.update(currency_params)
    prediction = @currency.neural_network.predict
    redirect_to prediction
  end
end

如果您确实需要它,我建议您设置一种格式(我猜您在需要时有更多格式):

def update
  respond_to do |format|
    format.html do
      if @currency.update(currency_params)
        prediction = @currency.neural_network.predict
        redirect_to prediction
      end
    end

    format.json { ... } # or whatever format you want to define.
  end
end