标签:des style blog http color io os 使用 ar
详细文档大家可以点击github的官方说明,不过是英文版本哦
https://github.com/thoughtbot/shoulda-matchers
shoulda-matchers provides Test::Unit- and RSpec-compatible one-liners that test common Rails functionality. These tests would otherwise be much longer, more complex, and error-prone.
shoulda-matchers对应了可以测试Rails常规功能的方法,使得测试用例非常简洁高效
如何安装使用?
(1)把下面的几行加到Gemfile文件里
group :test do gem ‘shoulda-matchers‘, require: false end 其中require:false表示不自动加载
(2)修改spec_helper.rb,加上下面两行
require ‘rspec/rails‘ require ‘shoulda/matchers‘
下面来看一下匹配的内容
attr_accessible
and attr_protected
macros.validates_format_of
validation.validates_inclusion_of
.validates_exclusion_of
.validates_length_of
.has_secure_password
.validates_confirmation_of
.validates_numericality_of
.validates_presence_of
.validates_uniqueness_of
.accepts_nested_attributes_for
macro.belongs_to
associations.enum
macro.has_many
associations.has_one
associations.has_and_belongs_to_many
associations.attr_readonly
macro.serialize
macro.rescue_from
macro.session
hash.flash
hash.重头戏就是下面的例子啦
# -*- encoding : utf-8 -*- class CmsUser < ActiveRecord::Base validates_presence_of :email validates_uniqueness_of :email def password=(password) write_attribute :password, self.class.md5(password) end def self.authenticate(username, password) CmsUser.where(username: username, password: md5(password)).first end def self.md5(str) Digest::MD5.hexdigest(str.to_s) end end
看下对应的cms_user_spec.rb测试
# -*- encoding : utf-8 -*- require ‘spec_helper‘ describe CmsUser do describe "validations" do it { should validate_presence_of(:email) } it { should validate_uniqueness_of(:email) } it "valid" do user = build :cms_user user.should be_valid end end describe "set password" do it "value will convert to md5" do user = build :cms_user user.password = "password" user.password.should eq Digest::MD5.hexdigest("password") end end describe "authenticate with username and password" do let!(:tester) { create :cms_user, username: "user", password: "password" } it "return user with valid user info" do user = CmsUser.authenticate tester.username, "password" user.id.should eq tester.id end it "return nil with invalid user info" do user = CmsUser.authenticate tester.username, "wrong_password" user.should be_nil end end end
标签:des style blog http color io os 使用 ar
原文地址:http://www.cnblogs.com/iwangzheng/p/4029617.html