public void AppendLine2() { var logSystem = new LogSystem(); // 新建一个ILogWriter的Mock对象,其Object属性即为我们需要的伪对象 var fakeWriter = new Mock <ILogWriter>(); // 新建一个ISource的Mock对象,其Object属性即为我们需要的ISource伪对象 var fakeSource = new Mock <ISource>(); //将ISource伪对象注入到ILogWriter伪对象的属性 fakeWriter.SetupProperty(fake => fake.Source, fakeSource.Object); // 伪造ILogWriter接口的CurrentLine属性 fakeWriter.SetupProperty(fake => fake.CurrentLine); fakeWriter.Object.CurrentLine = 3; // 当连续调用ILogWriter接口的AppendLine方法,并输入任意string类型参数时,触发回调使伪对象CurrentLine属性的值+1 fakeWriter.Setup(fake => fake.AppendLine(It.IsAny <string>())) .Callback(() => fakeWriter.Object.CurrentLine++); //将伪对象注入到被测试类 logSystem.OpenAppend(fakeWriter.Object); logSystem.AppendLine("运行正常"); Assert.AreEqual(4, logSystem.Writer.CurrentLine); }
public void ShowUri() { var logSystem = new LogSystem(); // 新建一个ILogWriter的Mock对象,其Object属性即为我们需要的伪对象 var fakeWriter = new Mock <ILogWriter>(); // 伪造ILogWriter接口的Source属性的Uri属性,并且赋初值new Uri("Log.txt", UriKind.Relative) fakeWriter.SetupProperty(fake => fake.Source.Uri, new Uri("Log.txt", UriKind.Relative)); //将伪对象注入到被测试类 logSystem.OpenAppend(fakeWriter.Object); var result = logSystem.ShowUri(); Assert.AreEqual("Log.txt", result); }
public void UpdatedTime() { var logSystem = new LogSystem(); // 新建一个ILogWriter的Mock对象,其Object属性即为我们需要的伪对象 var fakeWriter = new Mock <ILogWriter>(); // 新建一个ISource的Mock对象,其Object属性即为我们需要的ISource伪对象 var fakeSource = new Mock <ISource>(); //将ISource伪对象注入到ILogWriter伪对象的属性 fakeWriter.SetupProperty(fake => fake.Source, fakeSource.Object); //将伪对象注入到被测试类 logSystem.OpenAppend(fakeWriter.Object); // 触发ISource接口的Updated事件,并且设sender为ISource伪对象,参数为new DateTime(2018, 10, 10) fakeSource.Raise(fake => fake.Updated += null, fakeSource.Object, new DateTime(2018, 10, 10)); Assert.AreEqual(new DateTime(2018, 10, 10), logSystem.UpdatedTime); }
public void Save() { var logSystem = new LogSystem(); // 新建一个ILogWriter的Mock对象,其Object属性即为我们需要的伪对象 var fakeWriter = new Mock <ILogWriter>(); // 新建一个ISource的Mock对象,其Object属性即为我们需要的ISource伪对象 var fakeSource = new Mock <ISource>(); //将ISource伪对象注入到ILogWriter伪对象的属性 fakeWriter.SetupProperty(fake => fake.Source, fakeSource.Object); // 当调用ILogReader接口的Save()方法时,返回true fakeWriter.Setup(fake => fake.Save()).Returns(true); //将伪对象注入到被测试类 logSystem.OpenAppend(fakeWriter.Object); var result = logSystem.Save(); fakeWriter.Verify(fake => fake.Save(), Times.Once); //fakeWriter.Verify(fake => fake.Source, Times.Once); //fakeWriter.VerifyNoOtherCalls(); }