Welcome

首页 / 软件开发 / 数据结构与算法 / Rails测试《二》单元测试unit test

Rails测试《二》单元测试unit test2014-03-15单元测试

单元测试针对model,主要是测试model中的业务规则,测试model中的验证validates规则。

单元测试的文件存放在test/unit文件夹,针对user的model的单元测试文件是user_test.rb。

常用命令

从db/schema.rb中同步测试数据库的结构。

在数据库结构变化之后,就需要执行这个命令,保持测试数据库的结构和最新的数据库结构一致。

rake db:test:prepare

还有其他的一些相关命令。

如何编写并进行单元测试

在使用rails g model user或者rails g scaffold user的时候,会自动在test/unit文件夹中创建model对应的单元测试文件。
test/unit/user_test.rb

require "test_helper" class UserTest < ActiveSupport::TestCasetest "email invalid" douser = users(:one) assert user.invalid?, "email invalid"endtest "email invalid two" douser=users(:two) assert user.invalid? endtest "password do not match" douser =users(:three) assert user.invalid? endtest "all fields are valid" douser=User.new(:nickname=>"nickname",:email=>"sdf@13123.xo", :password=>"123456", :password_confirmation=>"123456") assert user.valid? endtest "password and password_confirmation do not match" douser = User.new(:nickname=>"asdf",:email=>"asdfasdf",:password=>"123", :password_confirmation=>"234") assert user.invalid? endend
app/model/user.rb

class User < ActiveRecord::Base attr_accessible :email, :nickname, :password, :password_confirmation attr_accessor :password, :password_confirmationvalidates :password, :confirmation => truevalidates :password_confirmation, :presence => true validates :email, :presence => true, :uniqueness => true, :format => { :with => /^w+@w+.w+$/ }, :length => { :maximum => 40 } validates :nickname, :presence => true, :length => { :in =>1..30 } end
test/fixtures/users.yml

one: nickname: nickname1 email: invalidemailtwo: nickname: nickname2 email: invalideamil@ three: nickname: nickname3 email: validemail@123.comfour: nickname: nickname4 email: validemail@baidu.com