Мне нужно проложить статический общий метод для модульного теста. Однако я не могу заставить Fakes создать объект прокладки. Кто-нибудь знает, как это сделать?
В частности, я хочу скрыть JsonConvert.DeserializeObject‹>() от Newtonsoft.
Мне нужно проложить статический общий метод для модульного теста. Однако я не могу заставить Fakes создать объект прокладки. Кто-нибудь знает, как это сделать?
В частности, я хочу скрыть JsonConvert.DeserializeObject‹>() от Newtonsoft.
Для каждого ожидаемого типа возвращаемого значения зарегистрируйте делегат следующим образом:
С этим кодом в модульном тесте:
using (var context = ShimsContext.Create())
{
ShimJsonConvert.DeserializeObjectOf1String<SomeJSonObject>(s => new SomeJSonObject() { Name = "Foo" });
SomeJSonObject o = ConsoleApplication3.Program.Deserialize();
Assert.IsNotNull(o);
Assert.AreSame(o.Name, "Foo");
}
И этот тестируемый код:
return JsonConvert.DeserializeObject<SomeJSonObject>("");
Это работает, как и ожидалось для меня.
При необходимости также зарегистрируйте другие перегрузки. Поэтому, если вы используете некоторые другие перегрузки, вы также должны зарегистрировать их соответствующие делегаты в оболочке:
Нравиться:
ShimJsonConvert.DeserializeObjectOf1String<SomeJSonObject>(s => new SomeJSonObject() { Name = "Foo" });
ShimJsonConvert.DeserializeObjectOf1StringJsonConverterArray((s, convertors) => new SomeJSonObject() {Name = "Bar"});
ShimJsonConvert.DeserializeObjectOf1StringJsonSerializerSettings((s, settings) => new SomeJSonObject() { Name = "Bar" });