首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rails中使用Minitest

在Rails中使用Minitest
EN

Stack Overflow用户
提问于 2011-10-03 03:25:36
回答 5查看 10.9K关注 0票数 20

最近,我读了很多关于Minitest的文章。我真的很喜欢超轻量级测试框架的想法。在最近的一个项目中,我决定用它来替换rspec,但没能让它全部正常工作。我的问题是

a)在我的验收/集成测试中获得命名的路由(rspec和test::unit似乎自动包含它们,但不包含minitest),

b) rails总体上缺乏采用,这让我感到不安(似乎每个人都在使用rspec,尽管它更多地用于gem/库)。

当rspec在测试rails应用程序方面占据主导地位时,是否值得使用minitest?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-27 23:56:19

我是minitest-rails的作者。从你最初提出这个问题到现在,事情已经发生了很大的变化。我的回答是假设您使用的是minitest-rails。

命名路由

如果你使用的是minitest-rails,这(现在)就能正常工作。您可以使用生成器来创建这些测试,也可以自己编写它们。所有命名的路由在您的验收/集成测试中都可用。

代码语言:javascript
复制
require "minitest_helper"

describe "Homepage Acceptance Test" do
  it "must load successfully" do
    get root_path
    assert_response :success
  end
end

领养

我认为,随着我们越来越接近Rails 4,我们将继续看到越来越多的人关注将Minitest与Rails结合使用。

值得吗?

我认为现在开始使用Minitest是非常值得的。现在Minitest正在进行着巨大的活动。它也很好地与最近对快速测试的关注保持一致。但这真的取决于你的应用程序和团队动态。

票数 24
EN

Stack Overflow用户

发布于 2012-02-10 09:44:13

我最近将一个应用程序从Rspec切换到Minitest &这是非常值得的。测试运行得更快,语法鼓励更智能、更精简的代码&不知何故,我现在对这个套件更有信心了(工作中的魔力更少了)。

改进扩展到集成/验收测试,我发现带有Capybara的Minitest比Cucumber更具可读性和直截了当(更不脆弱)。

下面是一个帮助器文件,应该是您获得unit, functional & integration tests running with Minitest using spec syntax所需的全部内容。这是基于@tenderlove的一个要点&大量阅读/实验。下面的注释和注意事项。

代码语言:javascript
复制
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)

require 'rubygems'
gem 'minitest'
require 'minitest/autorun'
require 'action_controller/test_case'

require 'miniskirt'
require 'capybara/rails'
require 'mocha'
require 'turn'

# Support files
Dir["#{File.expand_path(File.dirname(__FILE__))}/support/*.rb"].each do |file|
  require file
end


class MiniTest::Spec
  include ActiveSupport::Testing::SetupAndTeardown

  alias :method_name :__name__ if defined? :__name__
end


class ControllerSpec < MiniTest::Spec
  include Rails.application.routes.url_helpers
  include ActionController::TestCase::Behavior

  before do
    @routes = Rails.application.routes
  end
end

# Test subjects ending with 'Controller' are treated as functional tests
#   e.g. describe TestController do ...
MiniTest::Spec.register_spec_type( /Controller$/, ControllerSpec )


class AcceptanceSpec < MiniTest::Spec
  include Rails.application.routes.url_helpers
  include Capybara::DSL

  before do
    @routes = Rails.application.routes
  end
end

# Test subjects ending with 'Integration' are treated as acceptance/integration tests
#   e.g. describe 'Test system Integration' do ...
MiniTest::Spec.register_spec_type( /Integration$/, AcceptanceSpec )


Turn.config do |c|
  # use one of output formats:
  # :outline  - turn's original case/test outline mode [default]
  # :progress - indicates progress with progress bar
  # :dotted   - test/unit's traditional dot-progress mode
  # :pretty   - new pretty reporter
  # :marshal  - dump output as YAML (normal run mode only)
  # :cue      - interactive testing
  c.format  = :cue
  # turn on invoke/execute tracing, enable full backtrace
  c.trace   = true
  # use humanized test names (works only with :outline format)
  c.natural = true
end

笔记

适合在Rails 3.1或3.2中使用的

  • 。还没有尝试过下面的that.
  • gem 'minitest'是获得一些更高级的最小功能(let块等)所必需的,
  • 这使用了mocha (更完整的mocks/stub),miniskirt (factory_girl lite),和新的转弯跑步器。这些都不是Rails3.2的dependencies.
  • As,控制器测试中嵌套的describe块抛出错误
票数 21
EN

Stack Overflow用户

发布于 2012-01-12 09:38:30

过去几天,我做了一些工作,使使用minitest的测试Rails变得非常简单。请查看http://rawonrails.blogspot.com/2012/01/better-way-of-testing-rails-application.html了解更多信息。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7628654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档