本篇简要介绍使用JRuby + RSpec + Rails-Carrot + Celerity 进行rails3项目的集成测试。
1. Install jruby
> rvm install jruby
2. Rails Gemfile
if defined?(JRUBY_VERSION)
gem 'activerecord-jdbc-adapter', '1.0.2'
gem 'jdbc-mysql', :require => false
gem 'celerity'
gem 'rails-carrot', :require => 'carrot'
else
gem 'mysql2'
group :celerity do # celerity 是项目测试环境,根据喜好自己修改
gem 'mysql'
end
end
|
Other test gems
group :development, :test do
gem "database_cleaner"
gem 'webrat'
gem "rspec", ">= 2.0.0"
gem "rspec-rails", ">= 2.0.0"
end
|
3. Add Rails Environment
database.yml
celerity:
adapter: mysql
encoding: utf8
reconnect: false
database: AC_rails3_celerity
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock
#{Rails.root}/config/environments/celerity.rb
ACRails3::Application.configure do
config.cache_classes = true
config.whiny_nils = true
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_dispatch.show_exceptions = false
config.action_mailer.delivery_method = :test
config.active_support.deprecation = :stderr
end
4. Install Gems
>rvm jruby
>bundle install
5. RSpec helper
Create a RSpec helper and you can use it to test with Celerity.
#{Rails.root}/spec/Celerity_helper
require 'database_cleaner'
require 'celerity'
require 'carrot'
ENV["RAILS_ENV"] = 'celerity'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
Carrot.configure do |config|
config.run_server = true
config.external_ruby = true
config.rails_command = "~/.rvm/gems/ruby-1.9.2-p0/bin/rails s -e celerity -p 3001"
config.project_path = "#{Rails.root}"
config.server_port = 3001
# config.server_debug = true
end
Carrot.register_driver(Celerity::Browser.new)
RSpec.configure do |config|
DatabaseCleaner.strategy = :truncation
config.before :each do
@browser = Carrot.driver
DatabaseCleaner.clean
end
config.after :all do
DatabaseCleaner.clean
end
config.use_transactional_fixtures = false
def url(path)
Carrot.url(path)
end
def login(browser, login, password)
browser.text_field(:name, 'login').value = login
browser.text_field(:name, 'password').value = password
browser.button(:name, 'commit').click
end
end
|
6. Example
#{Rails.root}/spec/requests/hello_spec.rb
require 'celerity_helper'
describe "QA" do
before do
#以下为业务数据,直接插入数据到数据库
@company = create_company
@user = create_company_admin(@company, {:login => "qaman", :email => "qaman@test.com"})
end
it "should redirect to main page" do
@browser.goto(url('/'))
login(@browser, @user.login, "123456")
@browser.text.should =~ /Projects of Shepherd/
end
end
|
7. Resource
分享到:
相关推荐
6. **测试**:了解 RSpec 和 Test::Unit 等测试框架,编写单元测试和集成测试以确保代码质量。 7. **辅助方法(Helper Methods)**:学习如何创建和使用辅助方法来保持视图的整洁,如 form_for、link_to 等。 8. *...
6. **测试(Testing)**:Rails内置了全面的测试支持,包括单元测试(unit tests)、集成测试(integration tests)和功能测试(feature tests)。TDD(Test-Driven Development)和BDD(Behavior-Driven ...
rails-documentation-2-0-2
rails-documentation-1-2-0-rc1.chm
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
3. **数据库设计**:可能涉及到跨语言环境下的数据库设计原则,如如何确保数据一致性,以及如何设计适合多语言环境的数据库结构。 4. **API设计**:Rails如何构建RESTful API,以便PHP能够安全地访问和操作Rails...
5. **测试(Test)**: 在lib和test目录下,包含着插件的源代码和测试用例。了解如何编写和运行这些测试对于调试和维护插件至关重要。 6. **Rakefile和init.rb**: Rakefile用于定义任务,如安装或更新插件,而init.rb...
- RubyGems.org:官方的Ruby库(Gem)仓库,包含大量Rails插件和库。 - Stack Overflow:遇到问题时,可以在这里寻求帮助。 - RailsGuides:官方文档,详尽介绍Rails的各个方面。 通过学习和实践压缩包中的"Ruby...
jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成 Rails 文件上传jQuery-File-Plugin 是一个文件上传插件,由的Tschan 。 jQuery文件上传功能多文件选择。drag&拖放支持。进度栏和jQuery预览图像。 支持...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
guardrails-engine-output-schema-validator --help Usage: guardrails-engine-output-schema-validator [options] Options: -V, --version output the version number -s, --stdin Read from stdin -f, --file...
minitest-rails, Rails的Minitest集成 minitestRails 5的Minitest集成 安装gem install minitest-rails这将安装以下宝石:minitest配置创建一个新的Rail
webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。 有关详细信息,请参阅 #90. web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中...
Cucumber-Rails集成了Cucumber与Rails,使得开发者能够在Rails环境中方便地使用Cucumber进行功能测试。 在 Rails 应用中使用 Cucumber-Rails,开发者可以创建一个名为`features`的目录,里面包含这些Gherkin特性...
与稳定的Rails版本相比,Edge Rails可能包含未经过充分测试的新功能,因此对于开发环境而言,它提供了更多的探索和试验空间。使用Edge Rails的插件,如CRUD Generator 2,可以让你提前体验并利用到Rails的前沿技术。...
2-94街机外星风格射击游戏源码On Rails Shooter Template 1.202-94街机外星风格射击游戏源码On Rails Shooter Template 1.202-94街机外星风格射击游戏源码On Rails Shooter Template 1.202-94街机外星风格射击游戏...
tinymce-rails-imageupload, 用于TinyMCE和 Rails的映像上传插件,带有资产管道 重要说明:这个版本正在改写为 TinyMCE 4. x,,目前还没有得到很好的测试。 使用你自己的风险,反馈欢迎。 对于稳定版本目标 TinyMCE ...
rails-hackernews-reddit-producthunt-clone, 黑客 news/reddit/social 链接分享网站 用 Rails 构建 Rails 上的 Reddit-Hackernews-ProductHunt克隆演示 这是一个 readme.md的Ruby on Rails 应用程序,模仿了 Hacker...