【发布时间】:2016-09-21 01:48:08
【问题描述】:
所以我对 Rspec 还是很陌生,我试图弄清楚如何为一个将对象作为构造函数参数并将该对象设置为实例变量的类编写测试。然后它在其他方法中调用该实例变量的对象方法。
例子:
class ClassA
def initialize(string_object, gem_object)
@instance_variable1 = gem_object
@string = string_object
end
def check_validity?(some_arg)
unless @instance_variable1.gemObjectMethod1.gemObjectMethod2(some_arg).empty?
return true
end
false
end
..
..
end
我对如何为此编写规范感到非常迷茫。一方面,我真的不明白指定构造函数实际上需要什么。我意识到我必须找到某种方法来模拟或存根我作为参数得到的 gem_object ,但我不确定如何。
对于下一个方法,我目前尝试的是:
describe '#check_validity?' do
context 'gets empty list' do
let (:actual) { subject.check_validity?("sample") }
before do
allow(subject).to receive(@instance_variable1.gemObjectMethod1.gemObjectMethod2).with("sample").and_return([])
end
it 'returns false' do
expect(actual).to be false
end
end
end
但这给了我与我的构造函数有关的错误,说它需要 2 个参数,但给出了 0。
任何帮助将不胜感激!此外,我在网上找不到任何关于指定构造函数及其参数被模拟的内容。也许我找错地方了,或者可能遗漏了一些明显的东西,因为这是我第一次使用 BDD。
【问题讨论】: