我有测试,我已经用
删除了一个对象属性dictionary.stub(:words).and_return
(%w{cat,dog,fish,plane,rock,dig,dug,cut,cuts,put,puts,putting,ruby,use,GO,IT})
这样我就不必使用Dictionary.load_system_dictionary
方法填充@words
,我可以简单地删除words
方法。
现在我想测试另一个名为contains_word(word)
的方法:
def contains_word(word)
@words.map(&:upcase).join.include?(word.upcase)
end
但问题是@words
通常由Dictionary.load_system_dictionary
方法填充,但我不想使用它,因为它有90k记录,但没有它File.open(words_file).each {|word| @words << word}
{ {1}}我的@words
attr未被填充。
如果我这样做
dictionary.load_system_dictionary
对于真实字典,测试通过了 但如果我用
替换它dictionary.stub(:words).and_return
(%w{cat,dog,fish,plane,rock,dig,dug,cut,cuts,put,puts,puttingzaq1,ruby,use,GO,IT})
我得到了
Failure/Error: expect(dictionary.contains_word('IT')).to be true
expected #<TrueClass:2> => true
got #<FalseClass:0> => false
btw字典最初设置为
let(:dictionary) {Dictionary.new}
答案 0 :(得分:1)
如果contains_word
是Dictionary
方法,您可以这样做
dictionary.instance_variable_set(:@words, your_words_array)
More info关于instance_variable_set
。