Last active
April 26, 2024 14:58
-
-
Save stand-sure/3711eb8e8cda639e5db803aa9f8e7d37 to your computer and use it in GitHub Desktop.
Example of how to use Moq in ASP.NET MVC Unit Tests with NUnit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace MoqDemo.Tests | |
{ | |
using System; | |
using System.Web; | |
using System.Web.Mvc; | |
using System.Web.Routing; | |
using Moq; | |
using NUnit.Framework; | |
using HomeController = Controllers.HomeController; | |
[TestFixture] | |
public class HomeControllerTestClass | |
{ | |
Mock<HttpRequestBase> request; | |
Mock<HttpResponseBase> response; | |
Mock<HttpContextBase> context; | |
RequestContext rc; | |
[SetUp] | |
public void Init() | |
{ | |
request = new Mock<HttpRequestBase>(MockBehavior.Strict); | |
var cookies = new HttpCookieCollection(); | |
request.SetupGet(req => req.Cookies).Returns(cookies); | |
var uri = new Uri("https://www.example.com/pixel?dr=https%3A%2F%2Fwww.example.com"); | |
request.SetupGet(req => req.Url).Returns(uri); | |
var referrer = new Uri("https://www.example.com/referrer"); | |
request.SetupGet(req => req.UrlReferrer).Returns(referrer); | |
request.SetupGet(req => req.UserAgent).Returns("my browser"); | |
response = new Mock<HttpResponseBase>(MockBehavior.Strict); | |
response.SetupGet(resp => resp.Cookies).Returns(cookies); | |
response.Setup(resp => | |
resp.SetCookie(It.IsAny<HttpCookie>())) | |
.Callback<HttpCookie>((cookie) => cookies.Add(cookie)); | |
context = new Mock<HttpContextBase>(MockBehavior.Strict); | |
context.SetupGet(ctx => ctx.Request).Returns(request.Object); | |
context.SetupGet(ctx => ctx.Response).Returns(response.Object); | |
rc = new RequestContext(context.Object, new RouteData()); | |
} | |
[Test] | |
public void HomeShouldReturnAFile() | |
{ | |
var controller = new HomeController(); | |
controller.ControllerContext = new ControllerContext(rc, controller); | |
var actual = controller.Index(); | |
Assert.IsInstanceOf<FileContentResult>(actual, "Expected a FileResult"); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment