Mam poniżej klasę i próbuję przetestować metodę AddRecordToQueue.Wartość ustawienia metody ustawiania Moq
Używam Moq, aby kpić z wyniku metody AddToQueue w ramach metody AddRecordToQueue.
Sposób AddToQueue zwraca wartość logiczną, więc staram się drwić wynik z prawdziwej wartości
public class Test
{
private readonly IRabbitMqConnection rabbitMqConnection;
public Test(IRabbitMqConnection rabbitMqConnection)
{
this.rabbitMqConnection = rabbitMqConnection;
}
public bool AddRecordToQueue(string messageExchange, object data)
{
var jsonified = JsonConvert.SerializeObject(data);
var customerBuffer = Encoding.UTF8.GetBytes(jsonified);
var result = this.rabbitMqConnection.AddToQueue(customerBuffer, messageExchange);
return result;
}
}
Moja klasa test wygląda jak poniżej.
[TestClass]
public class TestCon
{
[TestMethod]
public void MockTest()
{
Moq.Mock<IRabbitMqConnection> rabbitConection = new Moq.Mock<IRabbitMqConnection>();
var draftContactsManager = new Test(rabbitConection.Object);
rabbitConection.Setup(e => e.AddToQueue(null, string.Empty)).Returns((bool res) => true);
var result = draftContactsManager.AddRecordToQueue("someExchange", null);
Assert.IsTrue(result);
}
}
Nie mogę ustawić wyniku moq jako true. Może ktoś doradzić co mam brakuje
dzięki
Nie w maszynie do testowania, ale są dwie rzeczy, które widzę tutaj. 1. Powinieneś 'Setup' zanim otrzymasz odwołanie do' .Object'; 2. W 'Setup' ustawiasz argumenty na wartość null, i opróżnij, spróbuj użyć' Setup (e => e.AddToQueue (It.IsAny(), Is.IsAny())). Returns (true)) ' – Eris