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

rails应用程序外部端点集成测试的良好实践?

  •  4
  • oma  · 技术社区  · 16 年前

    我会保持简短,我有一个rails应用程序,它可以与其他应用程序通信,一些使用SOAP(当然是非rails应用程序…),其他则使用REST。我正在进行集成测试,以确保端点包装器类具有正确的映射和设置。但是,它们在默认情况下执行 rake test

    对于这样的集成测试,你的偏好是什么?

    • 单元测试和/或模拟有多深?
    • 是否在存根中复制整个SOAP或REST xml响应?
    • 您是否创建了“外部端点”集成测试?

    ?

    4 回复  |  直到 16 年前
        1
  •  1
  •   gtd    13 年前

    解决办法是 VCR .

        2
  •  5
  •   Jed Schneider    16 年前

    有 模仿贝宝交易,对吧?在我目前的项目中,我面临着很多这样的问题,下面是我正在实施的一些解决方案:

    1. 模拟服务请求。是啊,这可能是个坏主意,但我不知道如何做,否则与任何类型的可预见性。我有一个单独的测试套件来确认这些服务正在运行,从我的rails应用程序来看,我假设它们工作正常。LDAP就是一个例子。是的,在这种情况下,我倾向于用真实的反应,做类似的事情。 response = double('response') ; response.expects(:data).and_returns('my xml here')

        3
  •  0
  •   oma    16 年前

    从中排除端点集成测试 rake test rake test:endpoints

    好吧,就这样: 创建任务:lib/tasks/slow_tests.rake

    require 'rails/test_unit/railtie'
    desc "Runs all endpoint integration tests."
    namespace :test do
    
      #hooks on to the test task through the 'test:prepare'
      #For details, check the railties gem (v3.0+) lib/rails/test_unit/testing.rake,
      #look for "task :test" and "namespace :test"
      TestTaskWithoutDescription.new(:endpoints => 'test:prepare') do |t|
        t.libs << 'test'
        t.pattern = 'test/endpoints/**/*_test.rb'
      end
    end
    

    注:这假设测试/单元或shoulda。

        4
  •  0
  •   wintersolutions    13 年前

    您应该围绕外部api(Facade/Wrapper)编写一个薄层,并使用 vcr-gem “存根”网络呼叫。 你可以从我的文章中得到更多的信息 rails test architecture

    推荐文章