以下是测试:
我在这里定义了关键数据:
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
答案 0 :(得分:2)
expect(response['bot_response']).to eq("the response contains")
上面的测试要求两个字符串相同。如果要检查字符串的一部分,请尝试:
expect(bot_response['bot_response']).to include("the response contains")
有关其他选项,请参阅RSpec matchers。