我想猴子修补String#select方法,并想创建一个测试套件来检查它是否不使用Array#select。
我尝试使用to_not receive
和to_not receive(Array:select)
一起使用to_not receive(:select)
创建了一堆测试。我还尝试使用数组(string.chars)代替string。 Google和堆栈溢出没有带来答案。
describe "String#select" do
it "should not use built-in Array#select" do
string = "HELLOworld".chars
expect(string).to_not receive(Array:select)
end
end
预期:一个有效的测试套件,用于检查整个方法中是否未使用Array#方法。
实际输出:我收到一个错误,指出没有使用足够的参数。输出日志如下:
1) RECAP EXERCISE 3 Proc Problems: String#select should not use built-in Array#select
Failure/Error: expect(string).to_not receive(Array:select)
ArgumentError:
wrong number of arguments (given 0,expected 1..4)
# ./spec/problems_spec.rb:166:in `select'
# ./spec/problems_spec.rb:166:in `block (4 levels) in <top (required)>'