我遇到问题似乎表明ActionController :: TestCase.get()方法忽略了我在routes.rb中的内容。
Rails版本是3.0.10。
我对我的XmlRpcController #index动作进行了以下RSpec2测试:
it "should get nothing in response to GET request" do
get :index
response.response_code.should == 400 #bad_request
end
在routes.rb中唯一与此路由相关的行是:
post 'rpc', :to => "xml_rpc#index"
'rake routes'也只显示这条路线。
因此,当我运行此测试时,操作实际上已执行!我通过在其中放入一个简单的放置来判断这一点)并且日志包含:
由XmlRpcController #index处理为HTML
此外,如果我在浏览器中转到“localhost:3000 / rpc” - 它说没有找到路由:就像它应该的那样。但测试还有其他行为,这让我很困惑......
任何人都可以暗示我为什么会这样?我刚刚开始学习RoR :) 之前我觉得TestCase的这些'get / post'方法确实尊重routes.rb ...
我错过了一些明显的东西吗? :)
答案 0 :(得分:0)
似乎'get:index'方法实际上忽略了routes.rb。
对我来说,真正的解决方案是使用为此特定目的编写的 be_routable rspec匹配器:
describe "GET 'contact'" do
it "should be successful" do
{ :get => '/rpc' }.should_not be_routable
end
end
感谢来自Ruby-Forum的一些用户。更多信息here。