【发布时间】:2010-02-03 21:26:16
【问题描述】:
您可以在下面看到我只打电话给File.open 一次,但 rspec 告诉我它收到了 3 次。
def self.import_file(filename)
current_file = filename.split('/').last
destroy_all(["filename = ?",current_file])
unpack_format = "A#{INPUT_FILE_FORMAT.map{|element| element[1]}.join("A")}"
debugger
File.open(filename, 'r').each do |line|
hash_created = create_hash(line, unpack_format).merge({:filename=>current_file})
create(hash_created)
end
end
it "should delete previous records with the same filename" do
Payrec.should_receive(:destroy_all).with(["filename = ?", "testfile.txt"])
File.should_receive(:open).and_return([@file_line])
Payrec.import_file "testfile.txt"
end
输出是
<File (class)> expected :open with (any args) once, but received it 3 times
【问题讨论】:
-
添加第二个对 import_file 的调用是否会将调用次数变为 4 或 6?如果它是 4,那么无论您执行什么操作,都可能会对其进行 3 次调用,并且您可能需要更深入地挖掘才能找到它们。如果它是 6,那么你调用它的次数是你认为的 3 倍。
标签: ruby-on-rails ruby file rspec