ruby - 如何编写 RSpec 测试以将字符串与其预期的子字符串进行比较?

标签 ruby rspec rspec2

我有一个像这样的 RSpec 测试:

context 'test #EnvironmentFile= method' do

  it 'compares the command generated with the expected command' do

    knife = EnvironmentFromFile.new(@knife_cfg_file)

    knife.environment_file=(@environment_file)

    expect(knife.chef_cmd_to_s).to eql("C:/blah/blah/bin/knife environment from file MySampleEnvironment.json --config 'knife.rb'")

  end
end

现在,为了避免平台依赖性,eql() 中的预期消息应该是没有初始 C:/blah/blah/bin/部分的子字符串。

我预期的消息应该是“来自文件 MySampleEnvironment.json 的刀环境 --config 'knife.rb'”

这应该与 knife.chef_cmd_to_s 方法返回的实际消息相匹配: “来自文件 MySampleEnvironment.json 的 C:/blah/blah/bin/knife 环境 --config 'knife.rb'”

我该怎么做?为此使用什么 Rspec 匹配器?

最佳答案

这是您将使用 include 匹配器 ( documentation ) 的地方。

context 'test #EnvironmentFile= method' do

  it 'compares the command generated with the expected command' do

    knife = EnvironmentFromFile.new(@knife_cfg_file)

    knife.environment_file=(@environment_file)

    expect(knife.chef_cmd_to_s).to include("knife environment from file MySampleEnvironment.json --config 'knife.rb'")

  end
end

关于ruby - 如何编写 RSpec 测试以将字符串与其预期的子字符串进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434372/

相关文章:

rspec - 异步行为的断言

rspec - 如何在 RSPEC 中设置语言环境

ruby-on-rails-3 - rspec/capybara/poltergeist 测试在本地通过 100%,在 teamcity CI 服务器上的随机测试失败

ruby-on-rails - stub_chain 和 should_receive

ruby - 在 RSpec-2.11 中使用隐式 `subject` 和 `expect`

ruby-on-rails - Rails default_scope 被应用于更新

ruby-on-rails - Rails Assets 未在生产中预编译

ruby /node.js + 亚马逊 SES : Is there an Amazon SES API?

ruby-on-rails - Rails Facebook 头像到 data-uri

ruby-on-rails - 使用 rspec 和 stub 对 Controller 进行故障测试