在使用rspec的rails集成测试中,我有两个对同一个url的请求的问题
it 'does something' do # get '/something',{:status=>'any_other'},@header ## <<<<< this line couses problem! get '/something',{:status=>'ok'},@header doc = Nokogiri::HTML(response.body) lis = doc.css('#the_id') lis.size.should == 1 lis[0].text.should include('anything') end
如果我向同一个控制器发出两个请求,则测试似乎保持旧的响应…
在上面的例子中,如果我取消注释该行,则测试中断将保持第一个“查询”的结果,
是测试堆栈的限制,还是我做错了?
解决方法
使用Capybara而不是rspec是(请求)集成测试的更好的解决方案.它使用与rspec相同的语法,并在单个块中允许多个请求.我使用rspec进行单元测试和capybara进行集成测试.