我需要对单元测试使用静态通用方法进行填充。但是,我似乎无法让Fakes创建shim对象。有谁知道如何做到这一点?特别是,我想填充Newtonsoft的JsonConvert.DeserializeObject () (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 对于您期望的每种返回类型,请像下面这样注册一个委托:在单元测试中使用以下代码: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>("");它按我的预期工作。如果需要,还注册其他重载。因此,如果您正在使用其他一些重载,则还必须在Shim上注册其对应的委托:喜欢:ShimJsonConvert.DeserializeObjectOf1String<SomeJSonObject>(s => new SomeJSonObject() { Name = "Foo" });ShimJsonConvert.DeserializeObjectOf1StringJsonConverterArray((s, convertors) => new SomeJSonObject() {Name = "Bar"});ShimJsonConvert.DeserializeObjectOf1StringJsonSerializerSettings((s, settings) => new SomeJSonObject() { Name = "Bar" }); (adsbygoogle = window.adsbygoogle || []).push({});
10-08 14:02