rspec来测试ruby方法是否返回一个数组

rub*_*ist 6 ruby rspec

我有一个返回数组的方法.我需要使用rspec测试它.有没有我们可以测试的方法:

def get_ids
  ####returns array of ids
end

subject.get_ids.should be_array
Run Code Online (Sandbox Code Playgroud)

要么

result = subject.get_ids
result.should be an_instance_of(Array)
Run Code Online (Sandbox Code Playgroud)

Sur*_*rya 18

那么,取决于你究竟在寻找什么.

要检查返回的值是否为数组(be_an_instance_of):

expect(subject.get_ids).to be_an_instance_of(Array)
Run Code Online (Sandbox Code Playgroud)

或者检查返回的值是否与期望数组的内容匹配(match_array):

expect(subject.get_ids).to match_array(expected_array)
Run Code Online (Sandbox Code Playgroud)

更新:

正如Patrick的评论中提到的,检查数组使用的等价匹配eq:

expect(subject.get_ids).to eq(expected_array)
Run Code Online (Sandbox Code Playgroud)

对于数组使用的身份匹配equal:

expect(subject.get_ids).to equal(expected_array)
Run Code Online (Sandbox Code Playgroud)