- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在运行一堆数据驱动的规范,预期的数据在不同的类中(因为有时我必须使用正则表达式,因为输出字符串每次都会更改但始终遵循特定格式)。
Ruby 的大小写相等运算符 ===
是一个可以完美检查它们的表达式。问题在于它与大多数 Ruby 表达式相比是反向工作的,有时操作是不对称的:
/rgx a/ === b # equivalent to b =~ /rgx a/
ClassA === b # equivalent to b.is_a? ClassA
在我的规范上下文中,这意味着我必须以错误的方式放置操作数:
[Class, /regex/, 'string'].each do |expected_data|
it { expect(expected_data).to be === actual_data }
end
这会导致错误的失败消息:
expected: === "Actual data"
got: "Expected data"
有没有办法反转或者===
运算符或者expect
语法?
最佳答案
如果归结为它,您可以为此定义自己的匹配器:
describe 'reverse case eq' do
it { expect('regex').to reverse_case_eq /regex/ }
it { expect('bad match').to reverse_case_eq /regex/ } # fails
end
RSpec::Matchers.define :reverse_case_eq do |expected|
match do |actual|
expected === actual
end
end
这种情况下的错误信息如下:
Failure/Error: it { expect('bad match').to reverse_case_eq /regex/ }
expected "bad match" to reverse case eq /regex/
还可以添加
failure_message do |actual|
"expected #{expected.inspect} to === #{actual.inspect}"
end
到定义 block ,然后失败消息将变为
Failure/Error: it { expect('bad match').to reverse_case_eq /regex/ }
expected /regex/ to === "bad match"
如果您发现自己经常遇到此用例,这可能是首选。
关于Ruby 的大小写相等运算符 (`===` ) 对于 RSpec 的 `expect` 是倒退的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42286196/
python 有办法反向执行 foreach 吗?我希望同时执行 filter() (或列表理解)和反转列表,这样我就可以避免单独执行(我怀疑这会更慢)。我正在使用 python 2.4(不幸的是我不
我有一个文本文件,其中随机出现了很多字符串@STRING_A,我有兴趣编写一个仅删除其中一些字符串的简短脚本。特别是扫描文件的文件,一旦找到以该字符串开头的行,例如 @STRING_A 然后检查向后
我一直在阅读有关使用 dns-prefetch 和预连接的信息。显然应该使用它们,因为一点一滴都有帮助。 dns-prefetch 比 preconnect 有更好的跨浏览器支持。所以我的问题是,如果
我想用 joda 时间回到 1 年前,但我不想从 2010 年 2 月 15 日到 2009 年 2 月 15 日,而是,如果 2010 年 2 月 15 日是星期一,那么我想去最近的 2009 年星
我是一名优秀的程序员,十分优秀!