ruby-on-rails – Rspec2测试before_validation方法

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rspec2测试before_validation方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下内容删除特定属性上的空格.
  1. #before_validation :strip_whitespace
  2.  
  3. protected
  4. def strip_whitespace
  5. self.title = self.title.strip
  6. end

我想测试一下.现在,我试过了:

  1. it "shouldn't create a new part with title beggining with space" do
  2. @part = Part.new(@attr.merge(:title => " Test"))
  3. @part.title.should.eql?("Test")
  4. end

我错过了什么?

解决方法

在保存对象或调用有效之前,验证不会运行?手动.您的before_validation回调未在当前示例中运行,因为您的验证永远不会被检查.在你的测试中,我建议你运行@ part.valid?在检查标题是否改变为您期望的标题之前.

应用程序/模型/ part.rb

  1. class Part < ActiveRecord::Base
  2. before_validation :strip_whitespace
  3.  
  4. protected
  5. def strip_whitespace
  6. self.title = self.title.strip
  7. end
  8. end

规格/型号/ part_spec.rb

  1. require 'spec_helper'
  2.  
  3. describe Part do
  4. it "should remove extra space when validated" do
  5. part = Part.new(:title => " Test")
  6. part.valid?
  7. part.title.should == "Test"
  8. end
  9. end

这将在包含验证时通过,并在验证被注释掉时失败.

猜你在找的Ruby相关文章