Quantcast
Channel: Mocking Asp.net-mvc Controller Context - Stack Overflow
Viewing all articles
Browse latest Browse all 8

Answer by ruslan rusu for Mocking Asp.net-mvc Controller Context

$
0
0

i've finished with this spec

public abstract class Specification <C> where C: Controller{    protected C controller;    HttpContextBase mockHttpContext;    HttpRequestBase mockRequest;    protected Exception ExceptionThrown { get; private set; }    [SetUp]    public void Setup()    {        mockHttpContext = MockRepository.GenerateMock<HttpContextBase>();        mockRequest = MockRepository.GenerateMock<HttpRequestBase>();        mockHttpContext.Stub(x => x.Request).Return(mockRequest);        mockRequest.Stub(x => x.HttpMethod).Return("GET");        EstablishContext();        SetHttpContext();        try        {            When();        }        catch (Exception exc)        {            ExceptionThrown = exc;        }    }    protected void SetHttpContext()    {        var context = new ControllerContext(mockHttpContext, new RouteData(), controller);        controller.ControllerContext = context;    }    protected T Mock<T>() where T: class    {        return MockRepository.GenerateMock<T>();    }    protected abstract void EstablishContext();    protected abstract void When();    [TearDown]    public virtual void TearDown()    {    }} 

and the juice is here

[TestFixture]public class When_invoking_ManageUsersControllers_Update :Specification   <ManageUsersController>{    private IUserRepository userRepository;    FormCollection form;    ActionResult result;    User retUser;    protected override void EstablishContext()    {        userRepository = Mock<IUserRepository>();        controller = new ManageUsersController(userRepository);        retUser = new User();        userRepository.Expect(x => x.GetById(5)).Return(retUser);        userRepository.Expect(x => x.Update(retUser));        form = new FormCollection();        form["IdUser"] = 5.ToString();        form["Name"] = 5.ToString();        form["Surename"] = 5.ToString();        form["Login"] = 5.ToString();        form["Password"] = 5.ToString();    }    protected override void When()    {        result = controller.Edit(5, form);    }    [Test]    public void is_retrieved_before_update_original_user()    {        userRepository.AssertWasCalled(x => x.GetById(5));        userRepository.AssertWasCalled(x => x.Update(retUser));    }}

enjoy


Viewing all articles
Browse latest Browse all 8

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>