gpt4 book ai didi

unit-testing - 使用 Microsoft Fakes 和静态通用方法填充

转载 作者:行者123 更新时间:2023-12-05 01:07:55 24 4
gpt4 key购买 nike

我需要为单元测试填充一个静态通用方法。但是,我似乎无法让 Fakes 创建 shim 对象。有谁知道如何做到这一点?

特别是,我想填充 Newtonsoft 的 JsonConvert.DeserializeObject<>()

最佳答案

对于您期望的每种返回类型,注册一个委托(delegate),如下所示:

在单元测试中使用此代码:

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 上注册它们相应的委托(delegate):

Other Overloads

像:
ShimJsonConvert.DeserializeObjectOf1String<SomeJSonObject>(s => new SomeJSonObject() { Name = "Foo" });
ShimJsonConvert.DeserializeObjectOf1StringJsonConverterArray((s, convertors) => new SomeJSonObject() {Name = "Bar"});
ShimJsonConvert.DeserializeObjectOf1StringJsonSerializerSettings((s, settings) => new SomeJSonObject() { Name = "Bar" });

关于unit-testing - 使用 Microsoft Fakes 和静态通用方法填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com