ruby-on-rails - 如何正确测试 Rails 中是否出现错误?
问题描述
我正在用 Rails 测试一个交互器,assert_raise
并且我正在向它传递不应引发错误的参数。
但是,该assert_raise
Interactor 调用不会失败,从而呈现误报。
交互者:
# frozen_string_literal: true
class Crm::ListTags
include Interactor
before do
context.adapter ||= CrmAdapter.new
end
delegate :contact_id, :adapter, to: :context
def call
response = adapter.list_contact_tags(contact_id)
context.contact_tags = response.body["contactTags"]
return if response.success?
raise StandardError.new "#{self.class} ERROR: #{response.body['message']}"
end
end
测试:
VCR.use_cassette("crm.active_campaign.retrieve_contact_tags_for_contact.successful") do
response = Crm::ListTags.call(adapter: @adapter, contact_id: contact_id)
assert response.success? # assertion success
assert_raise StandardError do
Crm::ListTags.call(adapter: @adapter, contact_id: contact_id) # assertion should fail but doesn't (as if it were reaching the error)
end
end
如您所见,我将相同的参数传递给两个 Interactor 调用。第二个应该失败,因为它不应该达到预期的错误。然而它没有。
解决方案
推荐阅读
- python - 为什么对象在 for 循环中加速?
- linux - 带有单独结果的 bash 简单搜索脚本
- r - 我想提高我的 hts 时间序列预测的准确性(MAPE)
- php - 递归循环遍历多维数组并对每个键值做一些事情
- jenkins-pipeline - 来自 AWS ECR 的 Jenkins 管道 Docker 代理
- c# - c# dllimport 试图加载格式不正确的程序
- c++ - set_union() 不适用于一组字符串
- django - 如何在 django 自定义保存方法中访问数据库对象?
- docusignapi - 如果文档是使用 Docusign API 签名的,如何访问已完成的文档?
- php - 重塑一维数组 PHP