我正在我的应用中构建活动流功能,所有活动都是通过控制器方法创建的。
当控制器方法成功时,活动是记录器到活动表。由于我的控制器操作是通过ajax调用的,所以我尝试直接从我的rspec测试中发布。
我试过了:
Net::HTTP.post_form(URI.parse("http://localhost:5000#{inquiry_path}"), { :id=> @user.id, :type => 'Inquiry' })
这是我在看到我的萤火虫时发布的ajax调用:
id:55
type:Inquiry
url:/user_inquiry
所以我断言活动计数是否已经改变:
it "activity count should be changed" do
PublicActivity::Activity.count.should == 1
end
在我完成测试计数已更改后,我希望看到用户主页实际显示新通知。
但是这个测试失败了:
Failure/Error: PublicActivity::Activity.count.should == 1
expected: 1
got: 0 (using ==)
以防万一我把puts语句放在我的控制器中,检查调用是否实际到达控制器:
puts "Hereeee"
我没有看到消息被打印,所以我猜这个请求永远不会到达控制器,为什么会这样?
我在这里做错了什么,我该怎么测试呢?
答案 0 :(得分:-1)
我的测试想法没问题,除了请求没有到达控制器的部分,这是我如何解决它(之前和它):
page.driver.post("#{inquiry_path}?id=" + @user.id)
it "post request should return the right response code" do
page.driver.status_code.should eql 200
end
现在我的请求到达控制器。