我的Rspec测试仍然失败,但看起来它应该工作

时间:2014-12-22 23:56:19

标签: ruby rspec

以下是测试:

我在这里定义了关键数据:

  let('bot_response') {
    {'bot_response' => 'the response contains <SETPROFILE><KEY>test_key</KEY><VALUE>TEST-SETPROFILE-VALUE</VALUE></SETPROFILE>'}
  }

我在这里运行我要测试的方法:

let('bot_response') {BotResponse.act_on_set_profile_tag(
    value,
    bot_client_id,
    bot_response
  )}

我在这里断言测试条件:

expect(bot_response['bot_response']).to eq("the response contains")

以下是实际方法的关键部分:

bot_response['bot_response'] = bot_response['bot_response'].gsub(/<SETPROFILE>(.*)<\/SETPROFILE>/, '').strip
return bot_response

我的测试失败了以下内容:

 Failure/Error: expect(response['bot_response']).to eq("the response contains")

   expected: "the response contains"
        got: "the response contains <SETPROFILE><KEY>test_key</KEY><VALUE>TEST-SETPROFILE-VALUE</VALUE></SETPROFILE>"

但我无法弄清楚原因。我是rspec的新手,实际上我不确定我做得对,尤其是let

1 个答案:

答案 0 :(得分:2)

expect(response['bot_response']).to eq("the response contains")

上面的测试要求两个字符串相同。如果要检查字符串的一部分,请尝试:

expect(bot_response['bot_response']).to include("the response contains")

有关其他选项,请参阅RSpec matchers