【发布时间】:2014-02-24 07:01:08
【问题描述】:
我正在尝试在 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
这是 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
这是控制器的创建语句:
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
还有sensor_attributes:
before do
@sensor_attributes = { name: "Testname", description: "This is a Test-Description." }
end
还有路线:
resources :sensors
知道出了什么问题吗?
【问题讨论】:
-
你要测试create方法吗?
-
哦,对不起。但你得出了正确的结论。我想测试 create 方法。
-
这些不是集成规范......它们是简单的控制器规范,因此应该在带有
post :create的控制器的上下文中进行测试。 -
最后我通过将 rspec-rails 升级到 3.0.0beta2 来运行它。也许这是 rspec-rails 2.x 和 rails 4.0 之间的问题。
标签: ruby-on-rails rspec ruby-on-rails-3.2