2013-11-28 56 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); 
     } 

    } 
} 

這看起來像它會爲我做的伎倆。

相關問題