Can someone please clarify my understanding of a mock's Verify concept?

Posted by Pure.Krome on Stack Overflow See other posts from Stack Overflow or by Pure.Krome
Published on 2011-03-07T08:03:43Z Indexed on 2011/03/07 8:10 UTC
Read the original article Hit count: 229

Filed under:
|
|
|
|

Hi folks,

I'm playing around with some unit tests and mocking. I'm trying to verify that some code, in my method, has been called. I don't think I understand the Verify part of mocking right, because I can only ever Verify main method .. which is silly because that is what I Act upon anyways.

I'm trying to test that my logic is working - so I thought I use Verify to see that certain steps in the method have been reached and enacted upon.

Lets use this example to highlight what I am doing wrong.

public interface IAuthenticationService
{
    bool Authenticate(string username, string password);
    SignOut();
}

public class FormsAuthenticationService : IAuthenticationService
{
    public bool Authenticate(string username, string password)
    {
        var user = _userService.FindSingle(x => x.UserName == username);
        if (user == null) return false;

        // Hash their password.
        var hashedPassword = EncodePassword(password, user.PasswordSalt);

        if (!hashedPassword.Equals(password, StringComparison.InvariantCulture))
            return false;

        FormsAuthentication.SetAuthCookie(userName, true);
        return true;
    }
}

So now, I wish to verify that

  • EncodePassword was called.
  • FormsAuthentication.SetAuthCookie(..) was called.

Now, I don't care about the implimentations of both of those. And more importantly, I do not want to test those methods. That has to be handled elsewhere. What I though I should do is Verify that those methods were called and .. if possible ... an expected result was returned.

Is this the correct understanding of what 'Verify' means with mocking?

If so, can someone show me how I can do this. Preferable with moq but i'm happy with anything.

Cheers :)

© Stack Overflow or respective owner

Related posts about .NET

Related posts about ASP.NET