【问题标题】:Rspec command line testRspec命令行测试
【发布时间】:2013-09-20 01:44:32
【问题描述】:

目前我正在构建的有以下两行我想为其创建单元测试:

system @command.join(' ')
exit $?.exitstatus

现在我知道我可以这样做:

Kernel.should_receive(:system).with()
Kernel.should_receive(:exit).with(0)

但是,当 gem 调用 $?.exitstatus 时,我无法模拟/存根。

有人知道怎么做吗?

【问题讨论】:

    标签: ruby rspec


    【解决方案1】:

    基于this

    你不应该存根 Kernel,你应该存根 system 从当前类中。

    例如

    #user.rb
    def self.my_test
      system('ls')
    end
    
    #test
    User.should_receive(:system).and_return('aaa')
    User.my_test # => 'aaa'
    

    如果不在类范围内调用any_instance,请不要忘记使用存根

    【讨论】:

    • 感谢您的反馈,我会试一试 :)
    • 嗨,以前给过这个,现在它可以按以下方式工作,无论如何:Cukesparse.should_receive(:system).with('test')Cukesparse.should_receive(:exit)干杯,乔恩
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    相关资源
    最近更新 更多