我想测试我的代码,它依赖于 Microsoft 日志记录,我想模拟它或绕过它。在这种方法中,我正在验证输入。
它给了我以下错误“尚未为 Logger 静态类设置 LogWriter。设置它调用 Logger.SetLogWriter 方法。” 我的代码如下。
public HttpResponseMessage Patch(long Id)
{
using (new Tracer(GetType().Namespace))
{
EnterpriseHeader entHeader = Request.GetEnterpriseHeaders();
Request.LogApiRequestReceived(_logger, entHeader, GetType().Name);
Request.VerifyIdFormat((ulong)CustomerId);
_bussinessObject.PatchData(Id, entHeader);
return Request.CreateResponse(HttpStatusCode.OK);
}
}
在模拟方法中,我正在编写以下代码。Ilogger 是我们的自定义记录器,我可以对其进行模拟,但“New Tracer(Gettype().NameSpace)”无法模拟。
var mocklogger = new Mock<ILogger>();
var mockTracer = new Mock<ITracer>();
mockTracer.Setup(x => x.Tracer(GetType().Namespace));
var Controller = new Controller(mockBO.Object, mocklogger.Object);
Controller.Request = AddHttpRequestForHeaders();
var Results = Controller.GetById(1517, true, false);
现在我想在 Moq 中模拟 Tracer。
如果我在 Moq 中模拟上述代码,它会给我错误,即“附加信息:非虚拟(在 VB 中可覆盖)成员上的设置无效:mock => mock.GetType()”
我在 Moq 中的代码是
var mockTracer = new Mock<Tracer>();
mockTracer.Setup(x => x.GetType().Namespace);
谢谢,