C# 如何在Telerik中模拟内部类
您要做的是将属性添加到包含内部类的程序集。这一点在本文中进行了解释 之后,重新生成程序集,然后可以在测试程序集中使用内部类型,就像它们是公共类型一样。您要做的是将属性添加到包含内部类的程序集中。这一点在本文中进行了解释 之后,重新生成程序集,然后您可以在测试程序集中使用内部类型,就像它们是公共类型一样。您可以使用它们来伪造内部类型。 因此,在测试中,您将使用:C# 如何在Telerik中模拟内部类,c#,asp.net-mvc,telerik,justmock,C#,Asp.net Mvc,Telerik,Justmock,您要做的是将属性添加到包含内部类的程序集。这一点在本文中进行了解释 之后,重新生成程序集,然后可以在测试程序集中使用内部类型,就像它们是公共类型一样。您要做的是将属性添加到包含内部类的程序集中。这一点在本文中进行了解释 之后,重新生成程序集,然后您可以在测试程序集中使用内部类型,就像它们是公共类型一样。您可以使用它们来伪造内部类型。 因此,在测试中,您将使用: [assembly: InternalsVisibleTo("TestAssembly")] [assembly: InternalsV
[assembly: InternalsVisibleTo("TestAssembly")]
[assembly: InternalsVisibleTo("Telerik.JustMock, PublicKey=0024000004800000940000000602000000240000525341310004000001000100098b1434e598c6" +
"56b22eb59000b0bf73310cb8488a6b63db1d35457f2f939f927414921a769821f371c31a8c1d4b" +
"73f8e934e2a0769de4d874e0a517d3d7b9c36cd0ffcea2142f60974c6eb00801de4543ef7e93f7" +
"9687b040d967bb6bd55ca093711b013967a096d524a9cadf94e3b748ebdae7947ea6de6622eabf" +
"6548448e")]
从这一点出发,您可以使用Isolate.NonPublic.WhenCalled
API来设置方法行为
并使用Isolate.Invoke.Method
API调用相关方法。可以用于伪造内部类型。
因此,在测试中,您将使用:
[assembly: InternalsVisibleTo("TestAssembly")]
[assembly: InternalsVisibleTo("Telerik.JustMock, PublicKey=0024000004800000940000000602000000240000525341310004000001000100098b1434e598c6" +
"56b22eb59000b0bf73310cb8488a6b63db1d35457f2f939f927414921a769821f371c31a8c1d4b" +
"73f8e934e2a0769de4d874e0a517d3d7b9c36cd0ffcea2142f60974c6eb00801de4543ef7e93f7" +
"9687b040d967bb6bd55ca093711b013967a096d524a9cadf94e3b748ebdae7947ea6de6622eabf" +
"6548448e")]
从这一点出发,您可以使用Isolate.NonPublic.WhenCalled
API来设置方法行为
并使用
Isolate.Invoke.Method
API调用相关方法。您不需要对内部类进行单元测试;只有公共API。如果您不能通过使用它的公共类正确测试声明
,那么代码设计就有问题;只有公共API。如果您不能通过使用它的公共类正确地测试Claim
,那么您的代码设计就有问题了。
var fakeInternal = Assembly.Load("ABC").GetType("ABC.Claim");
var fake = Isolate.NonPublic.Fake.Instance(fakeInternal);