Я хочу проверить свой код, который зависит от регистрации Microsoft, и я хочу издеваться над ним или передать его. в этом методе я проверяю ввод.Хотите обойти Microsoft.Practices.EnterpriseLibrary.Logging в тесте MOQ
это дает мне ниже ошибку «LogWriter не был установлен для статического класса Logger. Установите его, вызывая метод 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);
Теперь я хочу высмеять Tracer в Moq.
Если я дразнят obove код в Moq он дает мне ошибку, т.е. «Дополнительная информация: Invalid установка на невиртуальный (переопределение в VB) член: фиктивный => mock.GetType()»
и мой код в Moq является
var mockTracer = new Mock<Tracer>();
mockTracer.Setup(x => x.GetType().Namespace);
Спасибо,
Logger представляет собой статический класс, который затрудняет издеваться и тест в стандартных тестах. Выясните регистратор за интерфейсом, который можно высмеять во время тестов. Предоставьте больше контекста с точки зрения вашего кода. Недостаточно информации, чтобы предоставить вам хороший ответ. – Nkosi
Я не могу издеваться над «New Tracer (GetType(). NameSpace)». см. приведенный выше код. благодаря – yogs