我如何实际测试这个Controller Action,我在我的PurchasesController中写道:
val toVec = udf((x: Double, y: Double) => Vectors.dense(x, y))
df.select(col(df.columns(2)), toVec(col(df.columns(3)), col(df.columns(4))))
最好使用我的Rails控制台?
路线:
protect_from_forgery except: [:hook]
def hook
params.permit! # Permit all Paypal input params
status = params[:payment_status]
if status == "Completed"
@purchase = Purchase.find(params[:invoice])
@purchase.update_attributes(status: status, transaction_id: params[:txn_id], purchased_at: Time.now)
@purchase.save!
@user = @tool.user
@user.earned_money += @tool.price
@user.save!
end
render nothing: true
end
答案 0 :(得分:1)
您不通过rails控制台测试控制器。
Rails中的控制器响应HTTP请求 - 它们在路由组件与传入请求匹配时进行实例化。因此,您将通过发送HTTP请求并检查响应来测试控制器。
您可以使用命令行工具cURL或基于浏览器的Postman手动测试您的控制器以发送请求*。您可以使用rails控制台检查副作用,例如数据库中的更改。
答案 1 :(得分:0)
我不能完全确定您可以通过控制台对其进行测试,除非您对正在执行的其他操作进行解耦/抽象,然后单独测试这些单元。使用RSpec / Minitest,您只需创建记录并对/hook
路由发送请求,传递预期的参数:invoice
,txn_id
,payment_status
。
如果有帮助,请告诉我。