Я пытаюсь протестировать класс ApiController в C #, в частности, функцию, которая использует SerialPort.GetPortNames (). то, что это возвращает, зависит от машины, на которой он запущен, поэтому я хотел бы иметь возможность каким-то образом использовать Shim / stub / mock, чтобы он возвращал фиктивные данные.
с использованием Visual Studio 2015, цели проекта .net 4.5.2 и с использованием Microsoft.VisualStudio.TestTools.UnitTesting
Я думаю, что Microsoft Fakes сможет делать именно то, что мне нужно, но у меня нет Visual Studio Enterprise.
Я узнал, что Moq здесь бесполезен, и поза не работает с версией .Net, на которую ориентирован проект (4.5.2).
Я изучил prig, но не знаю, как его настроить для чего-либо, кроме datetime.now ().
и я не понимаю, как на самом деле тестировать с помощью Smock.
[HttpGet]
[Route("PortList")]
public HttpResponseMessage SerialPortList()
{
HttpResponseMessage response;
try
{
List<string> Ports = new List<string>(SerialPort.GetPortNames());
response = Request.CreateResponse(HttpStatusCode.OK, Ports);
}
catch (Exception ex)
{
response = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
}
return response;
}
Я хочу иметь возможность скрыть (правильное слово?) Статический метод от SerialPort и заставить его возвращать фиктивный список последовательных портов (["COM1", "COM2"]).