2016-08-08 13 views
0

のでモックをしようと私は部品番号を使用して、それをモックしようとしています。しかし、私はは、私は、単純な乗算アプリケーションと</p> <pre><code>public virtual int Multi(int a, int b) { return a * b; } </code></pre> <p>をしようとしていますユニットテストケース

Assert.AreEqual failed. Expected:<True (System.Boolean)>. Actual:<Castle.Proxies.WebForm1Proxy (Castle.Proxies.WebForm1Proxy)> 

を取得していますモック出力のようにそれは期待実際&が一致していない、しかし、なぜ私はこのエラーを取得しています意味

namespace UnitTestProject1 
{ 
    [TestClass] 
    public class UnitTest1 
    { 
     [TestMethod] 
     public void TestMethod1() 
     { 
      int a = 5; 
      int b = 10; 
      Mock<WebForm1> Titi = new Mock<WebForm1>(); 
      // WebForm1 obj = new WebForm1(); 
      //int Real= obj.Multi(a, b); 
      // Titi.Setup(x => x.data()).Returns(true); 
      Titi.CallBase = true; 
     var data= Titi.Setup(x => x.Multi(a, b)).Returns(50); 



      Assert.AreEqual(true, Titi.Object); 
      //Assert.AreEqual(50, Titi.Object); 




     } 
    } 
} 

で?それは単純な論理であるからです。

答えて

1

あなたは正しく

[TestMethod] 
public void TestMethod1() { 
    int a = 5; 
    int b = 10; 
    int expected = 50; 
    Mock<WebForm1> mockWebForm = new Mock<WebForm1>(); 
    mockWebForm.Setup(x => x.Multi(a, b)).Returns(expected); 

    var webForm = mockWebForm.Object; 

    var data = webForm.Multi(a, b); 

    Assert.AreEqual(50, data); 
} 

通常のモックは、依存関係のために使用されているモックを使用していません。例えば

私は..あなたが

public interface IMultiply { 
    int Multiply(int a, int b); 
} 

を持っているし、Webフォームは、そのインタフェース

public class WebForm1 { 
    IMultiply multiplier; 
    public WebForm1(IMultiply multiplier) { 
     this.multiplier = multiplier; 
    } 

    public virtual int Multi(int a, int b) { 
     return multiplier.Multiply(a, b); 
    } 
} 

に依存し、次にユニットテストは、この

[TestMethod] 
public void TestMethod1() { 
    //Arrange 
    int a = 5; 
    int b = 10; 
    int expected = 50; 
    var mockMultiplier = new Mock<IMultiply>(); 
    mockMultiplier.Setup(x => x.Multiply(a, b)).Returns(expected); 

    //your web form is the system under test 
    var webForm = new WebForm1(mockMultiplier.Object); 

    //Act 
    var actual = webForm.Multi(a, b); 

    Assert.AreEqual(expected, actual); 
} 
+0

おかげNkosiのように見えることができると言いますコンセプトを得ました... –

+0

@lokanathdas問題が解決しましたか?これで問題が解決した場合は、答えとしてマークしてください。 – Nkosi

関連する問題

 関連する問題