ruby-on-rails – 如何使用Ruby MiniTest :: Spec与Rails进行API集成测试?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何使用Ruby MiniTest :: Spec与Rails进行API集成测试?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在构建一个包含Rails API的应用程序,并希望使用 Ruby MiniTest :: Spec进行测试.

什么是设置好的好方法

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

我在“Rails 3 In Action”一书中使用了使用RSpec的指南,并对API有一个很好的一章.最大的变化是喜欢MiniTest :: 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_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

规格/工厂/ item.rb的

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

应用程序/控制器/ API / base_controller.rb

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

应用程序/控制器/ API / items_controller.rb

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

配置/ routes.rb中

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

的Gemfile

group :development,:test do
  gem 'capybara'  # Integration test tool to simulate a user on a website.
  gem 'capybara_minitest_spec'  # MiniTest::Spec expectations for Capybara node matchers.
  gem 'mocha'  # Mocking and stubbing library for test doubles for Ruby.
  gem 'minitest','>= 3'  # Ruby's core TDD,BDD,mocking,and benchmarking.
  gem 'minitest-capybara'  #  Add Capybara driver switching parameters to minitest/spec.
  gem 'minitest-matchers'  # RSpec/Shoulda-style matchers for minitest.
  gem 'minitest-Metadata'  # Annotate tests with Metadata key-value pairs.
  gem 'minitest-spec-rails'  # Drop in MiniTest::Spec support for Rails 3.
  gem 'miniskirt'  # Factory creators to go with minitest.
  gem 'ruby-prof'  # Fast code profiler for Ruby with native C code.
end

猜你在找的Ruby相关文章