【问题标题】:How to mock Internal class in Telerik如何在 Telerik 中模拟内部类
【发布时间】:2015-12-07 09:43:54
【问题描述】:
//Claim class Developed in solution ABC
class Claim
{
    public Claim(string s)
    {
        // progreamm.....
    }
}

//Test Case needs to write in Solution XYZ
[TestClass]
public class ClaimTest
{
    public void myconstructor()
    {
        //Now Question is how to access class Claim here?
    }
}

//Now Question is how to access class Claim constructor in myconstructor //function.

//Hope you get what i need to access using Just Mock in telerik

【问题讨论】:

  • 您不需要对内部类进行单元测试;仅限公共 API。如果您无法通过使用它的公共类正确测试Claim,那么您的代码设计就有问题。

标签: c# asp.net-mvc telerik justmock


【解决方案1】:

您所做的是将InternalsVisibleTo 属性添加到包含内部类的程序集中。在JustMock documentation中有解释。

[assembly: InternalsVisibleTo("TestAssembly")]
[assembly: InternalsVisibleTo("Telerik.JustMock, PublicKey=0024000004800000940000000602000000240000525341310004000001000100098b1434e598c6" +
"56b22eb59000b0bf73310cb8488a6b63db1d35457f2f939f927414921a769821f371c31a8c1d4b" +
"73f8e934e2a0769de4d874e0a517d3d7b9c36cd0ffcea2142f60974c6eb00801de4543ef7e93f7" +
"9687b040d967bb6bd55ca093711b013967a096d524a9cadf94e3b748ebdae7947ea6de6622eabf" +
"6548448e")]

之后,重建程序集,然后您可以在测试程序集中使用内部类型,就像它们是公共类型一样。

【讨论】:

    【解决方案2】:

    您可以使用Typemock Isolator 伪造内部类型。 所以在你的测试中,你会使用:

    var fakeInternal = Assembly.Load("ABC").GetType("ABC.Claim");
    var fake = Isolate.NonPublic.Fake.Instance(fakeInternal);
    

    从这一点开始,您可以使用Isolate.NonPublic.WhenCalled API 来设置方法行为。

    并使用Isolate.Invoke.Method API 调用相关方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      相关资源
      最近更新 更多