typemock抛出了InvalidCast异常

时间:2016-06-29 19:54:12

标签: dependency-injection typemock

我有以下代码剪切,我尝试使用typemock测试它,但得到了InvalidCast异常。 ISomeClass只是一个接口,SomeClass实现了该接口。 UseOfSomeClass是另一个使用SomeClass的类,其构造函数将SomeClass作为参数。我需要测试UseOfSomeClass。如何将类型模拟假对象注入类构造函数?

public interface ISomeClass
{
    void DoSomething();
}

public class SomeClass : ISomeClass
{
    public void DoSomething()
    {
        Console.WriteLine("Do something!");
    }
}

public class UseOfSomeClass
{
    public SomeClass SomeClassProperty { get; set; }

    public bool IsChecked { get; set; }

    public UseOfSomeClass(SomeClass someClass)
    {
        SomeClassProperty = someClass;
    }

    public void MyMethod()
    {
        SomeClassProperty.DoSomething();

        IsChecked = true;
    }
}

然后测试:

[TestClass]
public class UseOfSomeClassTest
{
    [TestMethod]
    public void TestMethod1()
    {
        var fakeSomeClass = Isolate.Fake.Instance<ISomeClass>();

        var use = new UseOfSomeClass((SomeClass)fakeSomeClass);

        use.MyMethod();

        Assert.IsTrue(use.IsChecked);
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

Typemock Isolator允许您模拟具体的类,因此在您的测试用例中不需要伪造ISomeClass。您可以伪造SomeClass并将其作为参数发送给ctor。

$ strace ssh -o PreferredAuthentications=password 127.0.0.1
[...]
open("/dev/tty", O_RDWR)                = 4
close(4)                                = 0
open("/dev/tty", O_RDWR)                = 4
[...]
write(4, "root@127.0.0.1's password: ", 27) = 27
root@127.0.0.1's password:
read(4,