代码之家  ›  专栏  ›  技术社区  ›  Jason

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

  •  0
  • Jason  · 技术社区  · 15 年前

    在过去的几天里,我静静地阅读了一些关于Rails测试的文档,我坐下来写我的第一个真正的测试,但不完全确定如何将我学到的知识结合起来,以实现下面的功能测试(测试控制器)

    我需要向URL发送一个GET请求,并传递3个参数(简单web服务),如果该功能在关键字中起作用的话 true 只返回,否则返回关键字 false 返回-仅返回其值&不包含在任何 <div> , <span> 或其他标签。

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

    这可能很简单,所以对于这样一个没有挑战性的问题,我深表歉意。

    2 回复  |  直到 15 年前
        1
  •  1
  •   John    15 年前

    你读过吗 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
    
        2
  •  0
  •   tadman    15 年前

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

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

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

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

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