2011-11-09 16 views
1

私はユニットテストにMoqを使用しています。私は最初のユニットテストを書こうとしています。私の層は "Controller => Service => Repository"です。ユニットテストMoq

(私は団結して、リポジトリのパターンを使用しています。)

私は私のユニットテストを実行するたびに、実際の値は常に_service.GetEquipStates().Count() = 0よう0です。私はどこが間違っているのか分かりません。提案してください。

私のユニットテストコードは、次のいずれかです。

private ITestService _service; 
private Mock<ITestRepository> RepositoryMoc; 

[TestInitialize] 
public void Initialize() { 
    RepositoryMoc= new Mock<ITestRepository>(); 
    _service = new TestService(RepositoryMoc.Object) 
} 
[TestMethod] 
public void GetEquipmentState() { 
    var stateList = new[] { new State { ID = 1, Desc= "test" } };   
    RepositoryMoc.Setup(es => es.GetStates(true)).Returns(stateList);  
    Assert.AreEqual(1, _service.GetStates().Count());   
} 
+3

また、 'TestService.GetStates()'のコードを投稿してください。 –

答えて

1

あなたのセットアップをtrue prameterとMethodeのGETSTATEのために行われます。

RepositoryMoc.Setup(es => es.GetStates(true)).Returns(stateList); 

しかし、Assert-Statementでの呼び出しは、パラメータなしのGetStateメソッドに対するものです。メソッドGetStateはデフォルトのパラメータで宣言されていますか、または関数には必要ですか?

このようにassert-statementを呼び出すだけでうまくいくはずです。

Assert.AreEqual(1, _service.GetStates(true).Count());   
1

あなたのコードを私のソリューションの1つに複製しました。テストには問題ありません。

private Mock<IAccessor> RepositoryMoc; 
    private Controller _service; 

    [TestMethod] 
    public void TestMethod() 
    { 
     // Arrange 
     _service = new Controller(); 
     RepositoryMoc = new Mock<IAccessor>(); 

     _service.Accessor = RepositoryMoc.Object; 

     var stateList = new[] { new State { ID = 1, Desc = "test" } }; 
     RepositoryMoc.Setup(es => es.GetStates(true)).Returns(stateList); 

     // Act & Assert 
     Assert.AreEqual(1, _service.GetStates().Count());   
    } 

コードはソリューションとまったく同じですか?

関連する問題