需要推进正确的方向,在Rails中编写我的第一个功能测试

时间:2010-05-19 03:27:19

标签: ruby-on-rails automated-tests functional-testing

在过去的几天里,我已经阅读了一些关于Rails测试的文档,我坐下来编写我的第一个真正的测试而不是100%确定如何将我学到的知识结合在一起以实现以下目标功能测试(测试控制器)

我需要向URL发送GET请求并传递3个参数(简单的Web服务),如果功能正常,则只返回关键字true,否则返回关键字false - 它的唯一值返回&amp;未包含在任何<div><span>或其他标记中。

测试应断言如果返回“true”,则测试成功。

这可能非常简单,所以对这样一个没有挑战性的问题道歉。

如果有人能指出我如何开始的写作方向,特别是我如何测试回应,我将非常感激!

2 个答案:

答案 0 :(得分:1)

您是否阅读过A Guide to Testing Rails Applications?这很不错。

您的测试可能看起来像:

def test_should_get_index
  get :index, :a => "1", :b => "2", :c => "3"
  assert_response :success
  assert_equal "true", @response.body
end

答案 1 :(得分:0)

如果它是对您自己的应用程序的测试,则可以根据您的偏好将此类功能作为功能测试或集成测试来完成。集成测试更“真实”,因为它们使用真实的URL和路由,而功能测试只是简单地执行特定的控制器操作。

对于外部服务,您真正需要的是使用Test :: Unit或其他框架(如rspec或Cucumber)作为测试定义的包装。

定义在某种类中发出此GET请求的方法,然后编写一个测试它的线束。例如:

def test_expected_response
  assert_equal 'true', MyHelper.make_call('param_a', 'param_b', 'param_c')
end

显然,除非正确定义MyHelper和MyHelper.make_call,否则此测试将失败,但这并不太难:

class MyHelper
  def make_call(a, b, c)
    # Call service using Net::HTTP, Curb, etc.
    # ...
    # Return answer
  end
end