Pas*_*rbo 12 rspec ruby-on-rails ruby-on-rails-3.2
我正在尝试在rails 4上使用rspec进行一些集成测试,但在运行测试时我总是得到"ActionController :: UnknownFormat"异常.
我尝试了两种不同的方式:
Failure/Error: post sensors_path, sensor: @sensor_attributes.to_json
ActionController::UnknownFormat:
ActionController::UnknownFormat
Failure/Error: post sensors_path, sensor: @sensor_attributes, format: :js
ActionController::UnknownFormat:
ActionController::UnknownFormat
Run Code Online (Sandbox Code Playgroud)
这是rspec代码:
it "should change the number of sensors" do
lambda do
post sensors_path, sensor: @sensor_attributes.to_json
end.should change(Sensor, :count).by(1)
end
it "should be successful" do
post sensors_path, sensor: @sensor_attributes, format: :js
response.should be_success
end
Run Code Online (Sandbox Code Playgroud)
这是控制器的create语句:
def create
respond_to do |format|
format.json do
@sensor = Sensor.new(params["sensor"])
@sensor.uuid = SecureRandom.uuid
@sensor.save
render nothing: true
end
end
end
Run Code Online (Sandbox Code Playgroud)
而sensor_attributes:
before do
@sensor_attributes = { name: "Testname", description: "This is a Test-Description." }
end
Run Code Online (Sandbox Code Playgroud)
路线:
resources :sensors
Run Code Online (Sandbox Code Playgroud)
知道出了什么问题吗?
小智 23
你json在控制器中使用格式,但是你正在通过format: :js测试.
它应该是:
post sensors_path, sensor: @sensor_attributes, format: :json
这是给未来读者的。不知怎的,答案对我没有帮助。
像下面这样的写法对我有用 -
params = {
sensor: {
name: "Testname",
description: "This is a Test-Description."
},
format: :json
}
post sensors_path, params
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9429 次 |
| 最近记录: |