在过去的几天里,我已经阅读了一些关于Rails测试的文档,我坐下来编写我的第一个真正的测试而不是100%确定如何将我学到的知识结合在一起以实现以下目标功能测试(测试控制器)
我需要向URL发送GET请求并传递3个参数(简单的Web服务),如果功能正常,则只返回关键字true
,否则返回关键字false
- 它的唯一值返回&amp;未包含在任何<div>
,<span>
或其他标记中。
测试应断言如果返回“true”,则测试成功。
这可能非常简单,所以对这样一个没有挑战性的问题道歉。
如果有人能指出我如何开始的写作方向,特别是我如何测试回应,我将非常感激!
答案 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