【问题标题】:How to use Ruby MiniTest::Spec with Rails for API integration tests?如何使用 Ruby MiniTest::Spec 和 Rails 进行 API 集成测试?
【发布时间】:2012-05-22 00:29:56
【问题描述】:

我正在构建一个包含 Rails API 的应用程序,并希望使用 Ruby MiniTest::Spec 进行测试。

有什么好的设置方法?

例如,良好的目录组织、包含文件的好方法等?

我正在使用 Rails 3 In Action 一书中的指导方针,该书使用 RSpec 并有一个关于 API 的精彩章节。最大的变化是更喜欢 MiniTest::Spec。

【问题讨论】:

    标签: ruby-on-rails ruby specifications minitest


    【解决方案1】:

    回答我目前发现的内容,以防它对其他开发人员有所帮助....

    spec/api/items_spec.rb

    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
    

    spec/spec_helper.rb

    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
    

    spec/factories/item.rb

    Factory.define :item do |x| x.name { "Foo" } 结尾

    app/controllers/api/base_controller.rb

    class Api::BaseController < ActionController::Base
      respond_to :json
    end
    

    app/controllers/api/items_controller.rb

    class Api::ItemsController < Api::BaseController
      def index
        respond_with(Item.all)
      end
    end
    

    config/routes.rb

    MyApp::Application.routes.draw do
      namespace :api do
        resources :items
      end
    end
    

    宝石文件

    组:开发,:测试做 gem 'capybara' # 在网站上模拟用户的集成测试工具。 gem 'capybara_minitest_spec' # MiniTest::Spec 对 Capybara 节点匹配器的期望。 gem 'mocha' # 用于 Ruby 测试替身的模拟和存根库。 gem 'minitest', '>= 3' # Ruby 的核心 TDD、BDD、模拟和基准测试。 gem 'minitest-capybara' # 将 Capybara 驱动切换参数添加到 minitest/spec. gem 'minitest-matchers' # 用于 minitest 的 RSpec/Shoulda 风格的匹配器。 gem 'minitest-metadata' # 使用元数据键值对注释测试。 gem 'minitest-spec-rails' # 加入 MiniTest::Spec 对 Rails 3 的支持。 gem 'miniskirt' # 与 minitest 一起使用的工厂创建者。 gem 'ruby-prof' # 带有原生 C 代码的 Ruby 快速代码分析器。 结尾

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2021-11-15
      相关资源
      最近更新 更多