在使用rake的过程中我们感觉到了rake的强大,当然我们也可以自定义一个rake.
1.新建一个工程unit_test
2.执行script/generate model User
Rails 环境不仅创建了模型,还创建了迁移、测试用例和测试 fixture。迁移让 Rails 开发人员可以在整个开发 过程中处理数据库表中不可避免的更改.然后编辑db/migrate/001_create_users.rb.添加需要的列.我的是:
def self.up
create_table :users do |t|
t.column :login, :string
t.column :firstname, :string
t.column :lastname, :string
t.column :password, :string
end
end
def self.down
drop_table :users
end
3.创建数据库
mysql> create database unit_test_development;
mysql> create database unit_test_test;
4.执行rake db:migrate
5.执行script/generate scaffold User user
6.对unit_test进行单元测试 ruby test/unit/user_test.rb如果测试用例通过,会得到 “.
” 字符。如果测试用例产生错误,会看到 E
。如果某个断言不是 true,那么将看到 F
。
但是测试太简单,所以是构建一个真正的测试用例的时候了。请在test/unit/user_test.rb中添加新的测试用例:
def test_new
users=User.find(:all)
User.new do |user|
user.login="aaa"
user.firstname="a"
user.lastname="aa"
user.password="123456"
user.save
end
result=User.find_by_login("aaa")
assert_equal "aa", result.lastname
assert_equal users.size + 1, User.find(:all).size
assert_equal "a", result.firstname
end
重新执行ruby test/unit/user_test.rb.你就会看到想要的测试结果了.
7.现在要制作一个测试 fixture 并为它编写一个测试。请编辑 test/fixtures/user.yml 文件,添加几个记录:
one:
id: 1
login: aa
firstname: a
lastname: aa
password: 123456
two:
id: 2
login: ddd
firstname: d
lastname: ddd
password: 654321
同样,还要把这个测试用例添加到user_test.rb 中:
def test_find
assert_equal "aa",User.find(1).login
assert_equal "ddd",User.find(2).login
end
执行ruby test/unit/user_test.rb
8.下面进入正题.写自己的rake任务
添加 lib/tasks/load_data.rake.
load_data.rake如下:
desc "Load fixtures into development db"
task :load_fixtures_user_data => :environment do
require 'active_record/fixtures'
ActiveRecord::Base.establish_connection(:development)
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, 'test', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
puts 'loading ' + fixture_file
Fixtures.create_fixtures('test/fixtures', File.basename(fixture_file, '.*'))
end
end
desc "Create new user"
task :create_user => :environment do
user=User.new(:login=>"bbb",:firstname=>"b",:lastname=>"bb",:password=>"123456789")
user.save
puts "user create"
puts "login:bbb"
puts "password:123456789"
end
desc "Clear existing data, then load development data so the developers have something to work with"
task :load_data => [:environment,'db:schema:load',:load_fixtures_user_data,:create_user]
这样我们就可以用rake:load_data来创建表并且把.../fixtures/user.yml中的数据载入到表中.
分享到:
相关推荐
RubyOnRails教程中文版
rubyonrails中文版,一步一步教你搭建ruby rails的应用,不可多得.
rubyonrails的api文档,适合那些不希望使用在线手册的朋友
RubyOnRails做的博客,实现了常用的功能,欢迎大家指正
ruby on rails实践,pdf格式,ruby入门级资料,包括ruby简介,安装方法,编写应用等。
RubyOnRails 官方指南
有时候 ruby配置mysql也许时间烦人的事情 这里有详细的 安装步骤 和错误分析
rubyonrails API文档 好东东哦 【英文】
Vrails 是 Ruby on Rails 开源博客。方便想搭建自己博客平台的朋友使用,界面简洁美观,部署方便。示例代码:User.create( ... username: "yourname", password: "password", password_confirmation: ...
博文链接:https://liuwei1981.iteye.com/blog/214554
rubyonrails实践
在RubyOnRails中运行长时间的后台任务变得非常简单_Ruby_下载.zip
SmartAdmin1.8.7.5_RubyOnRails_Full_version RubyOnRails版本
RubyonRails九日学习计划(含相关软件及书籍)时间 内容 目的 第一天 学习oracle 基本工具掌握 plsql ,sql语言,范式,索引,数据库安全,数据备份,导入导出。 熟练掌握SQL语言 第二天 1. ruby 语言历史和...
sqlite.exe文件 博文链接:https://dingji.iteye.com/blog/154563
RubyonRails实践 rails的安装 ruby的简介
RUBYONRAILS服务器配置收集.pdf
RUBYONRAILS服务器配置[总结].pdf
RUBYONRAILS服务器配置[收集].pdf