作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个方法可以在数据库中记录对特定记录的更改,但是首先,它会在进一步检查之前检查类别类型的有效性。如果返回false,则会引发错误。
class UpgradePackageRecorder
CATEGORIES = [ an array of categories here ... ]
def initialize(category)
@category = category
end
def record_change
unless valid_category?
raise "#{category} is not a recognized category"
end
other_methods
end
private
def valid_category?
CATEGORIES.include?(category)
end
end
RSpec.describe UpgradePackageRecorder do
describe '#record_change' do
context 'the package type is invalid' do
it 'raises an error' do
recorder = UpgradePackageRecorder.new('Bronze')
expect { recorder.record_change }.to raise_error(RuntimeError, /bronze is not a recognized category/)
end
end
end
end
Failure/Error: raise "#{category} is not a recognized category"
RuntimeError:
bronze is not a recognized category
category + ' is not a recognized category
,但不能解决问题。
Failure/Error: raise "Unrecognized category"
RuntimeError:
Unrecognized category
最佳答案
我想到了!
最终对我有用的语法是:
it 'raises an error' do
expect do
UpgradePackageRecorder.new(
'Bronze'
).record_change
end.to raise_error(
RuntimeError, /bronze is not a recognized category/
)
end
expect
块中还有另一个
it
。它正在验证
record_change
方法是否继续创建某个对象。
关于ruby-on-rails - 如何测试RuntimeError在Ruby中正确使用字符串插值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54296866/
我是一名优秀的程序员,十分优秀!