小编tom*_*tom的帖子

所有测试完成后,应使用什么RSpec钩子来执行清理任务?

我在我的项目中有这种情况 - 我有一个Singleton类代表测试期间使用的浏览器:

class Browser
  include Singleton
  def initialize
    @browser = Watir::Browser.new :ff
  end

  def goto url
    @browser.goto url
  end

  def close
    @browser.close
  end
end
Run Code Online (Sandbox Code Playgroud)

使用这个rakefile,我想确保在测试完成后浏览器关闭:

desc "default test task"
task :test_all do
  Rake::Task[:all_rspec_tests].invoke
  Rake::Task[:close_browser].invoke
end

desc "runs all rspec tests"
RSpec::Core::RakeTask.new(:all_rspec_tests) do |t|
  # run all rspec tests according to pattern for filename
  # tests make use of Singleton class representing browser
end

desc "closes browser used during tests"
task :close_browser do
  Browser.instance.close
end
Run Code Online (Sandbox Code Playgroud)

但这并不像预期的那样工作 - RSpec runner实例化它自己的singleton对象实例,close_browser任务没有看到它.因此,当close_browser任务被调度时,另一个浏览器实例被实例化并立即关闭,但测试期间使用的实例仍保持打开状态.在所有RSpec测试运行后,我怎样才能实现浏览器关闭?我想这必须通过RSpec全局钩子的一些配置来完成?有人会指出我这样的钩子的例子吗?谢谢!

ruby rake rspec rspec2

3
推荐指数
1
解决办法
1160
查看次数

Ruby 脚本中未初始化的常量错误

我正在对一个 Web 应用程序进行建模,您可以通过单击某个链接来访问另一个应用程序页面。我决定做这样的事情:

文件C:/Sandbox/common_page.rb

require_relative "./pageA"
require_relative "./pageB"
require_relative "./pageC"
require_relative "./pageD"
class CommonPage
  def pageA
    # click_pageA_link
    pageA.new
  end
  def pageB
    # click_pageB_link
    pageB.new
  end
  def pageC
    # click_pageC_link
    pageC.new
  end
  def pageD
    # click_pageD_link
    pageD.new
  end
  # and so on for other pages..
end
Run Code Online (Sandbox Code Playgroud)

文件C:/Sandbox/pageA.rb

require_relative "./common_page"
class PageA < CommonPage
  def pageA
    self
  end
end
Run Code Online (Sandbox Code Playgroud)

文件C:/Sandbox/pageB.rb

require_relative "./common_page"
class PageB < CommonPage
  def pageB
    self
  end
end
Run Code Online (Sandbox Code Playgroud)

对于表示其他页面的类,将提供类似的代码。如果我C:/Sandbox/test.rb使用以下代码运行文件:

require_relative …
Run Code Online (Sandbox Code Playgroud)

ruby require

1
推荐指数
1
解决办法
2641
查看次数

标签 统计

ruby ×2

rake ×1

require ×1

rspec ×1

rspec2 ×1