I need to simulate an enumerable class (well, it has one method: each). The code looks something like this OTTOMH: class Processor def initialize(input, output) @input = input; @output = output end def run @input.each do |row| @output << ProcessorEngine.new(row).process end end end This is the best I could come up with: @input = mock("input") class << @input def each [ [:a], [:b] ].each do |value| yield value end end end But that seems like adding behaviour to mocks which is generally recommended against. There is no way to specify that the each method is called. I can''t decide if this would be desirable or not. What I did instead was (with the help of a bit more setup) ProcessorEngine.should_receive(:new).with([:a]).and_return #blah ProcessorEngine.should_receive(:new).with([:b]).and_return #blah However, the input class is something we made ourselves, and the each method *is* the interface we defined on it, so I have this nagging feeling I should test that it is called. Any thoughts? Ta Ashley