1

我知道如何为 Minitest 编写以下测试风格...

需要“minitest_helper”

类 ApplicationHelperTest < ActionView::TestCase
  def test_nav_element_for_current_page
    self.stub(:current_page?, true) 做
      nav_element('Home', '#').must_equal(
        '<li class="active"><a href="#">首页</li>')
    结尾
  结尾

  def test_nav_element_for_non_current_page
    self.stub(:current_page?, false) 做
      nav_element('Home', '#').must_equal(
        '<li><a href="#">首页</li>')
    结尾
  结尾
结尾

...但我想以规范格式编写它。这是我尝试过的,但它不起作用:

需要“minitest_helper”

描述 ApplicationHelper 做
  它“当前页面的导航元素”做
    self.stub(:current_page?, true) 做
      nav_element('Home', '#').must_equal(
        '<li class="active"><a href="#">首页</li>')
    结尾
  结尾

  它“用于非当前页面的导航元素”做
    self.stub(:current_page?, false) 做
      nav_element('Home', '#').must_equal(
        '<li><a href="#">首页</li>')
    结尾
  结尾
结尾

我如何告诉 MinitestApplicationHelper应该自动包含ActionView::TestCase?我已经尝试了几件事,但还没有运气。

仅作为背景,application_helper.rb包含:

模块 ApplicationHelper
  def nav_element(文本,路径)
    选项 = {}
    options[:class] = 'active' if current_page?(path)
    link_tag = content_tag(:a, text, href: 路径)
    content_tag(:li, link_tag, 选项)
  结尾
结尾

我正在使用这些捆绑的宝石:

  * 导轨 (3.2.6)
  * 迷你测试 (3.2.0)
  * minitest-rails (0.1.0.alpha.20120525143907 7733031)

(请注意,这是minitest_rails(https://github.com/blowmage/minitest-rails) 的头部版本。)

4

2 回答 2

3

MiniTest::Rails 直到今天早上才实现 ActionView::TestCase。感谢您引起我的注意!:)

此修复程序将在 0.1 版本中。现在,更改您的 Gemfile 并链接minitest-rails到我的 git 存储库:

gem "minitest-rails", :git => "git://github.com/blowmage/minitest-rails.git"

编辑:这现在有效。您的代码应如下所示:

require "minitest_helper"

describe ApplicationHelper do
  it "nav_element for current page" do
    # Stub with Ruby!
    def self.current_page?(path); true; end
    nav_element('Home', '#').must_equal(
      '<li class="active"><a href="#">Home</a></li>')
  end

  it "nav_element for non-current page" do
    def self.current_page?(path); false; end
    nav_element('Home', '#').must_equal(
      '<li><a href="#">Home</a></li>')
  end
end

这应该是你需要做的所有事情。如果您有任何其他问题,请在邮件列表中开始讨论。https://groups.google.com/group/minitest-rails

于 2012-07-07T16:33:17.390 回答
1

也许使用 mintiest-spec-rails,它解决了所有这些必须使用生成器等的问题,并允许现有的 Rails 单元、功能和集成测试正常工作,同时允许使用 MiniTest::Spec 断言和语法。

于 2012-07-07T15:42:48.810 回答