Ich versuche, im Grunde zu tun, was der Titel sagt, um meinen api-Controller zu testen, aber ich habe Probleme, den richtigen Weg zu finden und kann es sich nicht leisten zu viel Zeit dafür. Hier ist mein Code.Wie man eine HTTP-Post-Anfrage mit einem JSON-Body unter Verwendung von Moq erstellt
[TestMethod]
public void Should_return_a_valid_json_result()
{
// Arrange
Search search = new Search();
search.Area = "test";
string json = JsonConvert.SerializeObject(search);
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
request.Setup(r => r.HttpMethod).Returns("POST");
request.Setup(r => r.InputStream.ToString()).Returns(json);
context.Setup(c => c.Request).Returns(request.Object);
var controller = new UserController();
controller.ControllerContext = new HttpControllerContext() { RequestContext = context };
//more code
}
Letzte Zeile kehrt CS0029 Fehler nicht implizit Typ konvertieren kann 'Moq.Mock System.Web.HttpContextBase' zu 'System.Web.Http.Controllers.HttpRequestContext'.
Ich bin mir auch nicht sicher über die Moq-Syntax, die ich verwenden sollte, andere Fragen, Beispiele und Moq-Dokumentation haben mir nicht viel geholfen.
Ich weiß, ich kann Moq für dieses Beispiel vermeiden, aber immer noch den Moq Weg herausfinden – D3v