我正在将自己从 FactoryGirl 中解放出来(至少在 lib 文件夹中)。所以,我开始写一些奇怪的东西,比如“mock”和“stub”。有人可以帮助新手吗?
我有这个模块
module LogWorker
extend self
def check_todo_on_log(log, done)
if done == "1"
log.todo.completed = true
log.todo.save!
elsif done.nil?
log.todo.completed = false
log.todo.save!
end
end
end
log
并且todo
是具有todo :has_many logs
关联的rails模型。但这在使用 stub 和 mock 时真的不重要,对吧?
我尝试了很多事情,但是当我将模拟传递给方法时,什么也没有发生,
describe LogWorker do
it 'should check_todo_on_log'do
todo = mock("todo")
log = mock("log")
log.stub!(:todo).and_return(todo)
todo.stub!(:completed).and_return(false)
LogWorker.check_todo_on_log(log,1)
log.todo.completed.should eq true
end
end
Failures:
1) LogWorker should check_todo_on_log
Failure/Error: log.todo.completed.should eq true
expected: true
got: false
(compared using ==
我真的很想看到一些规范来测试带有存根和/或模拟的 LogWorker.check_todo_on_log 方法。