2013-11-28 57 views
1

在TypeMock你可以创建一个未来的模拟对象,例如:MS Fakes可以创建未来的模拟对象吗?

public class ClassToTest 
{ 
    public ClassToTest() 
    { 
     var o = new Foo(); 
    } 
} 

[Test] 
public void Test() 
{ 
    var fakeFoo = Isolate.Fake.Instance<Foo>(); 

    Isolate.Swap.NextInstance<Foo>().With(fakeFoo); 
} 

确实MS假货具有相同的功能上面?

+0

据我所知这不支持。假货仍然提供强大的存根和嘲弄功能,但我认为它还没有。 – Spock

+0

是不是看起来很有前途:MS Fakes是开源嘲笑框架的不错选择,但我仍然把TypeMock作为我曾经使用过的数字1嘲笑工具。 –

+1

其实,如果我正在阅读你在这里做的事情正确地说,你可以用垫片来做到这一点,但是,它要求测试知道某个类有一个特定的依赖关系,而不是它的契约的一部分,这并不是很好的设计。 – Magus

回答

1

我找到了一个很好的例子from this SO question,它演示了如何伪造未来的对象实例。下面是这个问题的一个例子:

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public void TestMethod1() 
    { 
     ClassLibrary1.Child myChild = new ClassLibrary1.Child(); 

     using (ShimsContext.Create()) 
     { 
      ClassLibrary1.Fakes.ShimChild.AllInstances.addressGet = (instance) => "foo"; 
      ClassLibrary1.Fakes.ShimParent.AllInstances.NameGet = (instance) => "bar"; 

      Assert.AreEqual("foo", myChild.address); 
      Assert.AreEqual("bar", myChild.Name); 
     } 

    } 
} 

这看起来像它会为我做的伎俩。

相关问题