我正在构建一个包含 Rails API 的应用程序,并希望使用 Ruby MiniTest::Spec 进行测试。
有什么好的设置方法吗?
例如,良好的目录组织、包含文件的良好方式等?
我正在使用《Rails 3 In Action》一书中的指南,该书使用 RSpec,并且有一个关于 API 的精彩章节。最大的变化是更喜欢 MiniTest::Spec。
用我迄今为止发现的内容来回答,以防对其他开发人员有帮助......
require 'spec_helper'
class ItemsSpec < ActionDispatch::IntegrationTest
before do
@item = Factory.create(:item)
end
describe "items that are viewable by this user" do
it "responds with good json" do
get "/api/items.json"
response.success?.must_equal true
body.must_equal Item.all.to_json
items = JSON.parse(response.body)
items.any?{|x| x["name"] == @item.name}.must_equal true
end
end
end
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
gem 'minitest'
require 'minitest/autorun'
require 'action_controller/test_case'
require 'capybara/rails'
require 'rails/test_help'
require 'miniskirt'
require 'factories'
require 'mocha'
# Support files
Dir["#{File.expand_path(File.dirname(__FILE__))}/support/*.rb"].each do |file|
require file
end
Factory.define :item do |x| x.name {“Foo”} 结尾
class Api::BaseController < ActionController::Base
respond_to :json
end
class Api::ItemsController < Api::BaseController
def index
respond_with(Item.all)
end
end
MyApp::Application.routes.draw do
namespace :api do
resources :items
end
end
组:开发,:测试 gem 'capybara' # 模拟网站用户的集成测试工具。 gem 'capybara_minitest_spec' # MiniTest::Spec 对水豚节点匹配器的期望。 gem 'mocha' # 用于 Ruby 测试双打的模拟和存根库。 gem 'minitest', '>= 3' # Ruby 的核心 TDD、BDD、模拟和基准测试。 gem 'minitest-capybara' # 将水豚驱动切换参数添加到 minitest/spec 中。 gem 'minitest-matchers' # Minitest 的 RSpec/Shoulda 风格匹配器。 gem 'minitest-metadata' # 使用元数据键值对注释测试。 gem 'minitest-spec-rails' # 加入对 Rails 3 的 MiniTest::Spec 支持。 gem 'miniskirt' # 与 minitest 一起使用的工厂创建者。 gem 'ruby-prof' # 使用本机 C 代码的 Ruby 快速代码分析器。 结尾
也可以简单地做:
# test/test_helper.rb
...
require "minitest/spec"
ActiveSupport::TestCase.include(Minitest::Spec::DSL)
...
然后在正常的测试文件中,就可以做到:
describe "#current_user" do
it "returns a user" do
assert_kind_of User, current_user
end
end