Использование высмеиваемого универсального метода с помощью MoqC#

Место общения программистов C#
Ответить
Anonymous
 Использование высмеиваемого универсального метода с помощью Moq

Сообщение Anonymous »

Я предоставляю общего поставщика для сериализации JSON: < /p>
public interface IJsonSerializerProvider
{
T? Deserialize(string value);

string Serialize(object? obj);

object? Deserialize(string value, string type);
}

public class JsonSerializerProvider : IJsonSerializerProvider
{ ... }

В своих тестах я предоставляю имитацию этой версии, которая проксирует реального провайдера в качестве функции по умолчанию, например:
object? paramObj = null;

JsonSerializerProviderMock
.Setup(x => x.Serialize(IsAny()))
.Callback(s =>
{
paramObj = s;
})
.Returns(x => new JsonSerializerProvider().Serialize(paramObj));

var param1 = "";
var param2 = "";

JsonSerializerProviderMock
.Setup(x => x.Deserialize(IsAny()))
.Callback(s =>
{
param1 = s;
})
.Returns(x => new JsonSerializerProvider().Deserialize(param1));

JsonSerializerProviderMock
.Setup(x => x.Deserialize(IsAny(), IsAny()))
.Callback((s, r) =>
{
param1 = s;
param2 = r;
})
.Returns(x => new JsonSerializerProvider().Deserialize(param1, param2));
< /code>
К сожалению, я получил эту ошибку при запуске для последнего определения: < /p>
System.ArgumentException
Invalid callback. Setup on method with 2 parameter(s) cannot invoke callback with different number of parameters (1).
at Moq.MethodCall.ValidateNumberOfCallbackParameters(Delegate callback, MethodInfo callbackMethod)


Подробнее здесь: https://stackoverflow.com/questions/797 ... d-with-moq
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»