Я пишу модульный тест для моей службы WEB API. Я хочу издеваться над запросом с IP-адреса. Я использую Microsoft Unit Test.
[TestClass]
public class UnitTest1
{
private Mock<HttpContextBase> moqContext;
private Mock<HttpRequestBase> moqRequest;
[TestMethod()]
public void TestMethod1()
{
var controller = new TestController();
controller.ControllerContext = new ControllerContext(moqContext.Object, new System.Web.Routing.RouteData(), controller);
}
[TestInitialize]
public void SetupTests()
{
// Setup Moq
moqContext = new Mock<HttpContextBase>();
moqRequest = new Mock<HttpRequestBase>();
moqContext.Setup(x => x.Request).Returns(moqRequest.Object);
moqContext.Setup(x => x.Request.UserHostAddress).Returns("192.111.1.1");
}
}
Я не знаю, как действовать дальше, я получаю ошибку ниже.
> Severity Code Description Project File Line Suppression State
> Error CS1503 Argument 3: cannot convert from
> 'WebApplication1.Controllers.TestController' to
> 'System.Web.Mvc.ControllerBase' UnitTestProject1
Любая помощь приветствуется.
MOQ лучше, чем Rino, также альтернативные способы избежать виртуальных методов для тестирования MOQ.
Обновление
Итак, Контроллер является Контроллером API следующим образом
// GET: api/Test
public IEnumerable<string> Get()
{
string s =HttpContext.Current.Request.UserHostAddress;
...Authentication/Authorization based on IP address
return new string[] { s };
}
Я хочу смоделировать HttpContext.Current.Request.UserHostAddress в моем модульном тесте, чтобы проверить другой IP-адрес. Мой вопрос, как установить макет IP-адреса. Я нашел ссылку https://blog.slatner.com/geeky/mocking-request-userhostaddress-in-asp-net-mvc.html., но я не мог понять, как использовать. Любая помощь высоко ценится.