В Синатре - кто-нибудь использует тестовые приборы? как настроен ваш набор тестов? - PullRequest
7 голосов
/ 14 мая 2010

Я из мира Ruby / Rails. Я получаю тестирование на проекте Синатры (с Rack :: Test). Я обычно использую светильники в тестировании. Есть ли эквивалент для Синатры?

Как люди настраивают свои наборы тестов Sinatra (кроме базового примера helloworld, который является единственным примером, который я могу найти для тестов Sinatra).

Спасибо!

Ответы [ 2 ]

4 голосов
/ 14 мая 2010

Я использую Машинист для этого (и Rails, в том числе. Ненавижу светильники YAML.)

1 голос
/ 27 января 2016

ActiveRecord включает в себя поддержку приборов, вам просто нужно подключить их в test_helper.rb.

# test/test_helper.rb
require_relative '../app'
require 'minitest/autorun'
require 'active_record'

ActiveRecord::Base.establish_connection(:test)

class ActiveSupport::TestCase
  include ActiveRecord::TestFixtures
  include ActiveRecord::TestFixtures::ClassMethods

  class << self
    def fixtures(*fixture_set_names)
      self.fixture_path = 'test/fixtures'
      super *fixture_set_names
    end
  end

  self.use_transactional_fixtures = true
  self.use_instantiated_fixtures  = false
end

Тогда вы можете использовать приборы на ваших тестовых классах.

# test/unit/blog_test.rb
require_relative '../test_helper'

class BlogTest < ActiveSupport::TestCase
  fixtures :blogs

  def test_create
    blog = Blog.create(:name => "Rob's Writing")
    assert_equal "Rob's Writing", blog.name
  end

  def test_find
    blog = Blog.find_by_name("Jimmy's Jottings")
    assert_equal "Stuff Jimmy says", blog.tagline
  end
end

Настройте Rake для поиска ваших тестов в нужных местах.

# Rakefile
require_relative './app'
require 'rake'
require 'rake/testtask'
require 'sinatra/activerecord/rake'

Rake::TestTask.new do |t|
  t.pattern = "test/**/*_test.rb"
end

task default: :test

Я разместил небольшой пример приложения , чтобы продемонстрировать использование Sinatra, ActiveRecord и тестовых приборов.

...