2010-01-13 43 views
17

Tôi không biết làm cách nào để kiểm tra ứng dụng Sinatra của mình. Tôi chỉ cần chạyLàm thế nào để bạn chạy thử nghiệm trong Sinatra?

ruby ​​

Điều đó dường như không hoạt động. Tất cả các tập tin ra khỏi đó chỉ nói về cách viết nội dung của tập tin, nhưng không phải về cách để nó chạy.

Cảm ơn

+0

Tài liệu chính thức của Sinatra về thử nghiệm: http://www.sinatrarb.com/testing.html – imwilsonxu

Trả lời

-1

Nên đơn giản như ruby your_app_name.rb. Trên thực tế, điều này được hiển thị trên Sinatra homepage (dưới cùng).

+1

Cảm ơn bạn đã trả lời. Tôi đoán tôi không rõ ràng - làm cách nào để chạy tệp kiểm tra Rack :: Test mà tôi tạo. –

27

Nên đơn giản là đủ.

my_app.rb Given:

require 'rubygems' 
require 'sinatra' 

get '/hi' do 
    "Hello World!" 
end 

Và my_app_test.rb:

require 'my_app' 
require 'test/unit' 
require 'rack/test' 

set :environment, :test 

class MyAppTest < Test::Unit::TestCase 
    include Rack::Test::Methods 

    def app 
    Sinatra::Application 
    end 

    def test_hi_returns_hello_world 
    get '/hi' 
    assert last_response.ok? 
    assert_equal 'Hello World!', last_response.body 
    end 
end 

Bạn nên chắc chắn rằng bạn đã đá quý phải được cài đặt:

gem install sinatra rake rack-test 

Bây giờ bạn có thể chạy của bạn ứng dụng và thử nghiệm như sau:

ruby my_app.rb 
ruby my_app_test.rb 
+0

Tôi đánh giá cao giải pháp. Bạn có thể vui lòng cho tôi biết tại sao chúng ta sử dụng phương pháp 'ứng dụng' ở đây? –

0

Tôi đã đăng một small example dựa trên psyho's answer. Tôi cũng đã thêm hỗ trợ ActiveRecord, bao gồm cả đồ đạc thử nghiệm.

tôi cấu hình cào để chạy thử nghiệm:

# 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 

Bây giờ tôi có thể chạy các bài kiểm tra như thế này:

rake 

Một ví dụ thử nghiệm trông như thế này:

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 

tôi yêu cầu người trợ giúp này trong mọi tệp thử nghiệm để nối mọi thứ lên:

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

ActiveRecord::Base.establish_connection(:test) 

#Set up fixtures and such 
class ActiveSupport::TestCase 
    include ActiveRecord::TestFixtures 
    include ActiveRecord::TestFixtures::ClassMethods 
    include Rack::Test::Methods 

    def app 
    Sinatra::Application 
    end 

    self.fixture_path = 'test/fixtures' 
    self.use_transactional_fixtures = true 
    self.use_instantiated_fixtures = false 
end 
Các vấn đề liên quan