作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我使用 new RSpec syntax (expect
而不是 should
)并且我想测试一个数组是否包含另一个数组的元素。在旧语法中它将是:
array1.should include(array2)
在我尝试编写的新语法中:
expect(array1).to include(array2)
但是我得到了一个错误(这很合理):
TypeError: wrong argument type Array (expected Module)
然后我写道:
expect(array1).to be_include(array2)
但它很丑陋而且没有用:显然它检查 array2 是否是 array1 的元素,而不是检查 array2 的所有元素是否都包含在 array1 中。
最后我写道:
expect(array1 & array2).to eq(array2)
但这不是最漂亮的解决方案。你知道更多吗?
最佳答案
在将参数传递给数组匹配器时,您需要将参数展开:
expect(array1).to include(*array2)
这是因为您通常会列出文字,例如:
expect([1, 2, 3]).to include(1, 2)
就是说,expect(array1).to include(array2)
不应该像您遇到的那样因奇怪的错误而失败,事实上它可以正常工作并通过以下示例:
it 'includes a sub array' do
array2 = ["a"]
array1 = [array2]
expect(array1).to include(array2)
end
关于ruby - RSpec:如何在期望语法中使用数组包含匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14890375/
我是一名优秀的程序员,十分优秀!