活动流测试

时间:2014-02-17 16:02:57

标签: ruby-on-rails ruby rspec capybara

我正在我的应用中构建活动流功能,所有活动都是通过控制器方法创建的。

当控制器方法成功时,活动是记录器到活动表。由于我的控制器操作是通过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"

我没有看到消息被打印,所以我猜这个请求永远不会到达控制器,为什么会这样?

我在这里做错了什么,我该怎么测试呢?

1 个答案:

答案 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

现在我的请求到达控制器。