我怎么能模拟大会?

R. *_*des 5 .net mocking

是否有可能嘲笑这门Assembly课程?

如果是这样,使用什么框架,以及如何?

如果没有,如何为使用的代码编写测试Assembly

Fra*_* B. 9

TypeMock非常强大.我想它可以做到.对于其他模拟框架,如Moq或Rhino,您将需要使用其他策略.

Rhino或Moq策略:

每个示例:您正在使用Asssembly类来获取程序集的全名.

public class YourClass
{
    public string GetFullName()
    {
        Assembly ass = Assembly.GetExecutingAssembly();
        return ass.FullName;
    }
}
Run Code Online (Sandbox Code Playgroud)

大会从接口派生类_Assembly.因此,您可以注入接口,而不是直接使用Assembly.然后,很容易模拟测试的界面.

修改后的类:

public class YourClass
{
    private _Assembly _assbl;
    public YourClass(_Assembly assbl)
    {
        _assbl = assbl;
    }

    public string GetFullName()
    {
        return _assbl.FullName;
    }
}
Run Code Online (Sandbox Code Playgroud)

在你的测试中,你嘲笑_Assembly:

public void TestDoSomething()
{
    var assbl = MockRepository.GenerateStub<_Assembly>();

    YourClass yc = new YourClass(assbl);
    string fullName = yc.GetFullName();

    //Test conditions
}
Run Code Online (Sandbox Code Playgroud)

  • 根据Microsoft的文档,托管代码不应使用`_Assembly`(http://msdn.microsoft.com/en-us/library/system.runtime.interopservices._assembly%28v=vs.110%29.aspx): "此接口用于从非托管代码访问托管类,不应从托管代码调用." (4认同)