【问题标题】:Writing functional tests for facebooker controller?为facebooker控制器编写功能测试?
【发布时间】:2010-02-03 17:30:40
【问题描述】:

对于在功能测试中模拟 facebook 请求的最佳实践,有人有什么建议吗?是否就像在请求中添加所有正确的参数一样简单?有没有办法把它们存起来?

我正在使用带有模拟服务的 facebooker:

  # A mock service that reads the Facebook response from fixtures
  # Adapted from http://gist.github.com/44344
  #
  #   Facebooker::MockService.fixture_path = 'path/to/dir'
  #   Facebooker::Session.current = Facebooker::MockSession.create

但是当我编写一个基本的 get 测试时,它会尝试将浏览器重定向到 facebook 页面以添加应用程序,我认为这表明模拟不起作用。

  test "loads respondent" do
    Facebooker::Session.current = Facebooker::MockSession.create
    get :index
    puts @response.body # => <html><body>You are being <a href="http://www.facebook.com/install.php?api_key=65e9d2c74b295cc5bcea935b584557f6&amp;v=1.0&amp;next=http%3A%2F%2Ftest.host%2Ffacebook">redirected</a>.</body></html>
  end

【问题讨论】:

    标签: ruby-on-rails testing facebooker


    【解决方案1】:

    我使用最新版本的 facebooker (1.0.58) 进行了这项工作:

    # test_helper.rb
    require 'facebooker/mock/session'
    require 'facebooker/mock/service'
    
    Facebooker::MockService.fixture_path = File.join(RAILS_ROOT, 'test', 'fixtures', 'facebook')
    

    显然,您必须在固定装置中创建 facebook 目录,或者将其放在任何地方。在里面你必须为每个 facebook 方法添加一个文件夹,并为你想要测试的不同类型的响应添加一个 xml 文件。我必须添加facebook.users.getInfofacebook.users.hasAppPermission。最简单的方法是添加一个名为 default.xml 的文件,其中包含来自 facebook wiki 的示例代码以执行这些操作。

     # Controller test
     test "facebook action" do  
       get :index, {:fb_sig_added => true}, :facebook_session => Facebooker::MockSession.create
       assert_response :success
     end
    

    据我所知,fb_sig_added 参数是必要的,因为内部 facebooker 逻辑在检查该会话之前直接检查参数。这对我来说似乎有点古怪,但也许是有原因的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多