单元测试 – 有没有一种很好的方法在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |