public class DemoController : Controller
{
private readonly ICommonOperationsRepository _commonRepo;
public DemoController (ICommonOperationsRepository commonRepo)
{
_commonRepo = commonRepo;
}
public ActionResult Default()
{
var model = new DemoModel();
try
{
**ConcreteClass cc = new ConcreteClass(Request.ServerVariables["HTTP_X_REWRITE_URL"].ToString());
cc.ConcreteClassMethod();**
model.ListTopListing.AddRange(_commonRepo.GetListings());
}
catch (Exception ex)
{
ExceptionHandler objErr = new ExceptionHandler(ex, "DemoController .Default()\n Exception : " + ex.Message);
objErr.LogException();
}
return View(model);
}
}Пропустите выполнение метода для модульного тестирования контроллера потока
Я пытаюсь проверить мой блок управления. Конкретный конструктор ConcreteClass и его метод ConcreteClassMethod имеют некоторую зависимость от переменных HttpRequest, которые я не могу передать из своих модульных тестов.
Я хочу, чтобы я мог просто пропустить выполнение конструктора ConcreteClass и ConcreteClassMethod, когда я вызываю действие DemoController по умолчанию.
Вы не можете создать новый экземпляр объекта и остановить вызов конструктора. Вам нужно будет создать пустой конструктор без параметров. Либо это, либо перераспределить способ работы ваших методов. Вы также можете ввести значение с помощью инъекции зависимостей. – Luke
Не знаете, как это сделать. Не могли бы вы объяснить это подробно? – maverick
Пожалуйста, см. Мой ответ, особенно последний бит, который я только что добавил. Если вам нужна дополнительная информация, дайте мне знать. – Luke