quick code snippet to setup automoq
This is a quick start example of setup mock for Automoq.
var mocker = new AutoMocker();
var creditCardValidator = mocker.CreateInstance<CreditCardValidator>();
mocker.GetMock<ICreditCardValidator>().Setup(x => x.Validate("fakecardnunber", new DateTime(2024, 12, 12))).Returns(new CreditCardValidationResult("", true));
var result = creditCardValidator.Validate("fakecardnunber", new DateTime(2024, 12, 12));
Assert.IsTrue(result.Valid);
There's also option to use other feature like for instance, your class takes a string as part of its constructor. Then you can make use of automoq's use method as shown below. Also notice we using ReturnAsync to work with async
internal class Vechicle() : IVechicle
{
public async Task<string> GetMadeModelAsync()
{
return await Task.FromResult("testtesttest");
}
}
internal interface IVechicle
{
Task<string> GetMadeModelAsync();
}
internal class User(string dummy, IVechicle _vechicle)
{
public async Task<string> GetModel()
{
return await _vechicle.GetMadeModelAsync();
}
}
// using returnAsync would be much better
[Test]
public async Task TestGetUser()
{
var mocker = new AutoMocker();
mocker.Use("toyota");
var fakeUser = mocker.CreateInstance<User>();
mocker.GetMock<IVechicle>().
Setup(x => x.GetMadeModelAsync()).ReturnsAsync("testtesttest");
var result = await fakeUser.GetModel();
Assert.That(result, Is.Not.Null);
Assert.AreEqual("others", result);
Assert.Pass();
}
Comments