public void TestCallSequence() { // 新建mock对象 var stub = new StubIUserDao(MockBehavior.Strict) .CreateUser((p2) => { return(null == p2 ? 0 : 1); }, Times.Once) // 限定最多调用一次 .CreateUser((p2) => { return(null == p2 ? 0 : 1); }, Times.Twice) // 限定最多调用两次 .CreateUser((p2) => { return(null == p2 ? 0 : 1); }, Times.Forever); // 解除调用次数上限设置 // 如果不执行上述最后一行,那么stub对象只能执行CreateUser 两次(取决于最后一条的限定),执行超出次数会抛异常 // 将Mock对象赋值给依赖对象,从而解除依赖对象对测试的干预 uMagr.UDao = stub; // 从这开始执行测试 类似 EasyMock->replayAll(); Assert.AreEqual(1, uMagr.CreateUser(new User() { Username = "******", Password = "******" })); Assert.AreEqual(1, uMagr.CreateUser(new User() { Username = "******", Password = "******" })); Assert.AreEqual(1, uMagr.CreateUser(new User() { Username = "******", Password = "******" })); }
public void TestMethod_WithReturnType_WithParameters_DefaultBehavior_Strict()// 展示 MockBehavior为Strict下的不同之处,于下面的method一起比对观察 { // 构建一个不带函数定义的Mock对象(存根) var stub = new StubIUserDao(MockBehavior.Strict); uMagr.UDao = stub; // 调用方法的时候,Strict模式下会抛出异常,因为没有定义调用函数 Assert.AreEqual(0, uMagr.CreateUser(null)); }
public void TestMethod_Void_WithNoParameters_DefaultBehavior_Loose() { // 构建一个不带函数定义的Mock对象(存根),默认下MockBehavior为Loose var stub = new StubIUserDao(); uMagr.UDao = stub; // 调用方法的时候,Loose模式下不会抛出异常,并且返回函数返回值的默认值 null | 默认基本类型值 | Assert.AreEqual(0, uMagr.CreateUser(null)); }
public void TestThatMethodStubCanBeOverwritten()// 测试Mock对象的方法是否支持重写 { // 构建一个Mock对象 var stub = new StubIUserDao() .CreateUser(u => 1); // 重写其调用的方法,如果需要重写则需要加上overwrite:true,否则将不会重写 stub.CreateUser(u => 2, overwrite: true); uMagr.UDao = stub; // replayAll() Assert.AreEqual(2, uMagr.CreateUser(new User())); }
public void TestMethod_WithReturnType_WithParameters()// 测试Mock对象的函数带参数的调用 { // 设置一些初始变量 int Expect = 1; string Username = null; string Password = null; // 用于判断是否修改的对象 User user = new User() { Username = Username, Password = Password }; // 开始构建Mock var stub = new StubIUserDao() .CreateUser((u) => { user = u; return(Expect); }); uMagr.UDao = stub; // replayAll() Assert.AreEqual(Expect, uMagr.CreateUser(new User() { Username = "******" })); Assert.AreEqual("test", user.Username); }