Talking to another developer about this he pointed all I needed to do was to give my mock objects some state to handle what passes or fails; BRILLIANT!! why didn't I think of that. So I took the base class
I added 2 collections:
- A Collection of string to handle messages added by the various mocked methods to tell the unit test what has occurred
- A second collection of strings to to tell the mock to fail and on what methods based on messages passed to the mock object
public class BaseTestRequest
{
public Collection Messages { get; set; }
public Collection FailOn { get; set; }
private string _currentMessage = string.Empty;
public string CurrentMessage
{
get { return _currentMessage; }
set
{
_currentMessage = value;
Messages.Add(value);
}
}
public BaseTestRequest()
{
Messages = new Collection();
FailOn = new Collection();
}
public bool WasSuccessful()
{
return (!FailOn.Contains(_currentMessage));
}
}
public class TestAuthenticationRequests : BaseTestRequest, IAuthenticationRequests
{
public bool AuthenticateUser(string userName, string password)
{
CurrentMessage ="AuthenticateUser";
return WasSuccessful();
}
}
to see the full code with comments check out this Sample Code from the sample project.
No comments:
Post a Comment