Moq - невозможно преобразовать из x в System.Func <x> - PullRequest
1 голос
/ 01 мая 2019

Я пытаюсь издеваться над этим методом:

 public JsonSerializerSettings createSerializerSettingsUsingRequest(Request request)
        {

            var serializerSettings = new JsonSerializerSettings()
            {
                ContractResolver = new Utilities.CustomContractResolver(false, request.text)
            };
            return serializerSettings;
        }

И вот как я издеваюсь:

 _service = new Mock<IService>();
 _service.Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
                                .Returns<JsonSerializerSettings>(new JsonSerializerSettings { ContractResolver = new Utilities.CustomContractResolver(false, null) });

Но ошибка показывает

не может конвертировать из 'Newtonsoft.Json.JsonSerializerSettings' в System.Func<Newtonsoft.Json.JsonSerializerSettings, Newtonsoft.Json.JsonSerializerSettings>

Кто-нибудь знает, как правильно его издеваться?

1 Ответ

1 голос
/ 01 мая 2019

Удалить общий аргумент. Перегрузка, которую вы пытаетесь вызвать, не делает то, что вы думаете.

var settings = new JsonSerializerSettings { 
    ContractResolver = new Utilities.CustomContractResolver(false, null) 
};
_service
    .Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
    .Returns(settings);

Если вы пытаетесь повторить поведение исходного метода, получите доступ к переданному аргументу.

Например

_service
    .Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
    .Returns<Request>(request => new JsonSerializerSettings { 
        ContractResolver = new Utilities.CustomContractResolver(false, request.text) 
    });
...