2
我是单元测试和模拟的新手,我试图为我的一个类设置测试,我想确保从同一个类中的另一个方法调用特定的方法。因此,我想要使用具体的实施方法,但要剔除其中的一部分。这可能吗?是否有可能用Rhino Mocks生成部分存根?
public class MyClass { public Accounts[] GetAccounts() { return GetAccounts(null); } public Accounts[] GetAccounts(CustomerId id) { if(id == null) { // Get all accounts } } }
因此,我想建立一个存根,将获得GetAccounts()叫(我想使用的具体实施),但我想,以检查是否该方法调用GetAccounts(空)。
[Test] public void GetAccountsTest() { MockRepository mocks = new MockRepository(); MyClass stub = mocks.Stub(); using(mocks.Record()) { Expect.Call(() => stub.GetAccounts()).CallOriginalMethod(); Expect.Call(() => stub.GetAccounts(null)); } mocks.ReplayAll(); stub.GetAccounts(); mocks.VerifyAll(); }
问题是,具体的类被调用上,我希望当我打电话stub.GetAccounts()在重放过程中得到叫做CallOriginalMethod()线。 因此,无论是在录制过程中还是在执行测试时,我都会调用实现的具体方法,但我只是想将它们嘲笑出来 - 部分正如我已经解释的那样。这是我的误解吗?我是否应该无法模拟/存储具体类以及接口?
我是否需要为我想要模拟的方法添加虚拟关键字?
这甚至可能吗?我会怎么做?
这可能适合我,但问题是,当设置存根/模拟的方法被称为某种原因,我只想设置expectencies。 – Fadeproof 2008-12-15 14:29:49