gpt4 book ai didi

ruby - RSpec:如何在期望语法中使用数组包含匹配器

转载 作者:数据小太阳 更新时间:2023-10-29 06:23:05 26 4
gpt4 key购买 nike

我使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com