加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

单元测试 – 有没有一种很好的方法在Rails中用`:on`参数测试`be

发布时间:2020-12-16 21:07:24 所属栏目:百科 来源:网络整理
导读:我有一个before_validation:do_something,:on = :在我的一个模型中创建. 我想测试这种情况发生了,并且不会发生:保存. 是否有一种简洁的方法来测试它(使用Rails 3,Mocha和Shoulda),而不执行以下操作: context 'A new User' do # Setup,name test etc @us
我有一个before_validation:do_something,:on => :在我的一个模型中创建.

我想测试这种情况发生了,并且不会发生:保存.

是否有一种简洁的方法来测试它(使用Rails 3,Mocha和Shoulda),而不执行以下操作:

context 'A new User' do
  # Setup,name test etc
  @user.expects(:do_something)
  @user.valid?
end

context 'An existing User' do
  # Setup,name test etc
  @user.expects(:do_something).never
  @user.valid?
end

在shoulda API中找不到任何东西,这感觉相当不干……

有任何想法吗?谢谢 :)

解决方法

我认为你需要改变你的方法.您正在测试Rails是否正常工作,而不是您的代码适用于这些测试.考虑改为测试代码.

例如,如果我有这个相当无聊的类:

class User
  beore_validation :do_something,:on => :create

  protected

  def do_something
    self.name = "#{firstname} #{lastname}"
  end
end

我实际上会像这样测试它:

describe User do
  it 'should update name for a new record' do
    @user = User.new(firstname: 'A',lastname: 'B')
    @user.valid?
    @user.name.should == 'A B' # Name has changed.
  end

  it 'should not update name for an old record' do
    @user = User.create(firstname: 'A',lastname: 'B')
    @user.firstname = 'C'
    @user.lastname = 'D'
    @user.valid?
    @user.name.should == 'A B' # Name has not changed.
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读