ruby - 我如何在测试中模拟 %x?

标签 ruby unit-testing rspec mocking tdd

我有这样的东西:

class Something
  def some_method
    %x{xyz}
  end
end

在规范中:

describe Something do
  describe "#some_method" do
    it "should execute xyz command in a subshell" do
      x = Something.new
      #What should come here?
      x.some_method
    end
  end
end

我知道如何模拟“系统”。但我的问题是针对 "%x"的。那么如何模拟 %x 呢?

最佳答案

您要查找的行是

x.should_receive(:`).once.with('xyz')

反引号实际上是一个被调用的方法,它们之间的任何内容都作为字符串参数传递。 %x{...} 只是反引号的语法变体,因此会导致相同的方法调用。

关于ruby - 我如何在测试中模拟 %x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052650/

相关文章:

java - 期望EasyMock中的其他参数

ruby-on-rails - 在 RSpec 中使用 expect 和 should

ruby-on-rails - 我如何使用 Ruby on Rails 或其他工具在我自己的域中呈现站点?

python - pytest : Cannot mock __init__ of my class

c++ - 如何在 VS Coded UI Test Builder 的自定义控件中将测试提供程序从 MSAA 切换到 UIA

ruby-on-rails - 如果没有删除链接,则进行销毁的 Rspec 测试

ruby-on-rails - Rails 4 + Rails-API + RSpec + Devise - 使用自定义设计路由对 Controller 进行故障测试

ruby-on-rails - 如何使用 Nokogiri 解析 HTML 表格?

iOS通过脚本创建.h文件,自动构建上传

puppet - 如何将数组传递给 ruby​​ 中的 erb 模板并对其进行迭代?