|
在 setUp()
方法内,用 Collaborator
类的构造方法所需的实际 值实例化对象数组。该数组被立刻传递给 RMock 的 intercept()
方法来帮助实例化模拟对象。方法的签名类似于 jMock CGLIB mock()
方法的签名,因为这两种方法将接纳惟一模拟对象标识符作为参数。模拟对象到 Collaborator
类型的类强制转换十分有必要,因为 intercept()
方法将返回类型 Object。
在测试方法本身 testRunServiceAndReturnFalse()
之内,您可以看到更多更改。模拟 Collaborator
对象的 executeJob()
方法将被调用。在此阶段,模拟对象处于记录状态 —— 即简单地定义对象将一直期望的方法调用,因此,模拟将相应地记录期望。下一行是对模拟对象的通知,用于确保当它遇到 executeJob()
方法时,它应当返回字符串 failure。因此,使用 RMock,您只需通过调用方法而不调用模拟对象(并传递它可能需要的任何参数)来描述期望,然后修改该期望以相应地调整任何返回类型。
最后,调用 RMock 方法 startVerification()
把模拟 Collaborator
对象转为就绪状态。模拟对象现已准备好在 ServiceClass
类中作为实际对象使用。该方法非常重要并且必须调用它才能避免测试初始化失败。