У меня есть некоторые проблемы с насмешкой локальной переменной в методе моего класса.Смещение локальной переменной в вызывающем методе
Я пытаюсь высмеять мой класс Worker, но он вызывает метод, который возвращает значение null, а моя контекстная переменная становится нулевой. Таким образом, я получаю исключение, когда пытаюсь получить свойство Name.
Как заставить CreateWorkerContext()
вернуть значения? Может быть, есть способ издеваться над локальной переменной (context
)?
Спасибо!
Мой код будет более подробно рассказать об этой проблеме:
namespace Moq
{
class Program
{
static void Main(string[] args)
{
var workerMock = new Mock<Worker>();
workerMock.Object.GetContextName();
}
}
public class Worker
{
public string GetContextName()
{
// something happens and context does not create (imitated situation)
WorkerContext context = CreateWorkerContext();
// exception because _context is null
return context.Name;
}
private WorkerContext CreateWorkerContext()
{
// imitate that context is not created
return null;
}
}
public class WorkerContext
{
public string Name { get; set; }
}
}
Вам необходимо полностью распаковать или изменить «WorkerContext CreateWorkerContext()». Возможно, нужно вставить конструктор 'IWorkerContextFactory' в конструктор' Worker'. – CodeCaster
1 для завода. Или сделайте инъекцию «IWorkerContex». – rbm
Таким образом, нет никакого способа делать издевательство без изменения исходного кода. Sad – yurart