I'm trying to mock a Userservice that inherits a baseclass with som generic methods. I'm not able to mock the call to RetrieveEntitiesTest.
When I call var validated = _userServiceMock.Object.ValidateUser(email, password);
the acctual implementation of RetrieveEntitiesTest is executed...
Is this possible? U can se a representation of my code below:
public class BaseService
{
public virtual bool RetrieveEntitiesTest<T>(QueryExpression query)
{
return false;
}
}
public class UserService : BaseService
{
public bool ValidateUser(string username, string password)
{
// adding query parameters
var query = new QueryExpression();
var userCount = RetrieveEntitiesTest<User>(query);
return userCount > 0;
}
}
[TestFixture]
public class UserServiceTests
{
private Mock<UserService> _userServiceMock;
[TestFixtureSetUp]
public void TestFixtureSetUp()
{
_userServiceMock = new Mock<UserService>();
}
[Test]
public void ValidateLogin_ValidEmailValidPassword_ValidatedAndReturnsTrue()
{
string email = "user@company.com";
string password = "password";
var query = .....
_userServiceMock.Setup(x => x.RetrieveEntitiesTest<User>(new QueryExpression())).Returns(true);
var validated = _userServiceMock.Object.ValidateUser(email, password);
Assert.IsTrue(validated);
}
}