0

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

我需要向 URL 发送 GET 请求并传递 3 个参数(简单的 Web 服务),如果功能有效,true则简单地返回关键字,否则返回关键字false- 它仅返回值且不包含在 any<div><span>其他中标签。

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

这可能非常简单,因此为这样一个没有挑战性的问题道歉。

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

4

2 回答 2

1

你读过Rails 应用程序测试指南吗?这个很不错。

您的测试可能看起来像:

def test_should_get_index
  get :index, :a => "1", :b => "2", :c => "3"
  assert_response :success
  assert_equal "true", @response.body
end
于 2010-05-19T03:36:47.777 回答
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
于 2010-05-19T03:37:32.987 回答