我想创建一个单元测试来验证 Logger.Write 命令在我的一个 MVC 控制器中使用正确的消息执行。
我可以模拟 Logger 写入的 Listener,但我不知道如何访问存储的消息。例如,
var mockListener = new Mock<MyTraceListener>();
// the .Write method is void so I can't use .Returns() on my mock
mockListener.Setup(listener => listener.Write(It.IsAny<string>()))
MyController controller = new MyController();
MyController.Index();
// 然后 Index 方法调用以下 Logger.Write() 到写入 MyTraceListener 的类别:
Logger.Write("test message", "MyCategory");
这个写入记录器的命令不会返回输入字符串或将其存储到一个参数中,以便我使用断言语句进行验证。我可以使用 Moq 验证或设置之一或 .when(无论这是什么)函数来获取记录的消息,或者至少检查它是否已执行?
最好,我想将日志条目存储到我的单元测试中的一个变量中,以便我可以断言:
Assert.AreEqual(loggedMessage, "test message");
如果有人知道这样做的策略,我将不胜感激。