2017-09-27 4 views
-2

私はvoidメソッドをテストするための助けが必要です。誰かがテストでvoidメソッドがどのように動作するかを説明することができます。moq testing voidメソッドを削除する

私のサービスは、次のようになります。

  1. 編集状態
  2. コールいくつかの他の方法

あなたの方法を行うので:

public void DeleteUser(int userId) 
{ 
    var user = _dbcontext.Users.FirstOrDefault(usr => usr.Id == userId); 
    { 
     if (user != null) 
     { 
      _dbcontext.Users.Remove(user); 
     } 

    _dbcontext.SaveChanges(); 
    } 
} 




[TestClass] 
public class UnitTest 
{ 
    [TestMethod] 
    public void DeleteUser() 
    { 
     mockContext = new Mock<UserService>(); 
     mockContext.SetUp(x => x.Users(It.IsAny<int>()).Returns(userid) 
    } 
} 
+0

無効である場合メソッドをテストしたいですか? –

+0

実際のデータベースで単体テストを行うのは良い選択ではありません。また、IoCを使用していない場合はここでMoqが必要なく、クラスが仮想でない場合は動作しません。それ以外に、そのテストで本当に達成したいことを再考してください。 – Erexo

+0

関連する質問を横に見てください。これは、それらの複製となる場合があります。 –

答えて

2

ボイドの方法は二つの重要なことを行うことができますあなたがテストしたいものを直接編集するのではなく、RemoveとSaveChangesが使用された場合に呼び出されますrが見つかった場合には何も呼び出さない。

Mockには、両方の場合に使用できる特殊なVerifyメソッドがあります。ここでのSaveChangesを(あなたが道であれば内部に置くことができます)と呼ばれていたことを確認する方法の例です:

mockContext 
    .Verify(c => c.SaveChanges(), Times.Once()); 

あるいは、(ユーザーが存在しない場合):

mockContext 
    .Verify(c => c.SaveChanges(), Times.Never()); 
関連する問題