EF Moq Unit Test, Uncertain Check

I am completely new to unit tests. I read a lot of “tutorials” from different people, and I decided to use msdn solutions.

I use this https://msdn.microsoft.com/en-us/library/dn314429(v=vs.113).aspx as my test, I'm interested in " Testing scripts without query " there.

According to this article, I tried to test my simple CRUD Create () action .

Here's my code ( FinancialAssistantEntities is my DbContext (EF database first)):

Context:

public partial class FinancialAssistantEntities : DbContext
{
    public FinancialAssistantEntities()
        : base("name=FinancialAssistantEntities")
    {
    }
    .
    .
    .
    public virtual DbSet<FAWallet> FAWallet { get; set; }
}

: ( , " " FinancialAssistantEntities " ." ),

public async Task<bool> CreateWallet(FAWallet model)
{
    using (var context = Context)
    {
        // transaction with IsolationLevel
        //using (var tran = context.Database.BeginTransaction(IsolationLevel.ReadUncommitted))
        {
            try
            {                       
                context.FAWallet.Add(model);
                //context.SaveChanges();
                await context.SaveChangesAsync();
                //tran.Commit();
                return true;
            }
            catch (Exception ex)
            {
                //tran.Rollback();
                throw ex;
            }
        }
    }
}

TestMethod:

[TestMethod]
public void CreateWalletTest()
{
    var wallet = new FAWallet()
    {
        WalletId = Guid.NewGuid(),
        //WalletName = StringHelper.GenerateRandomString(12),
        // admin ID
        WalletUserId = "e6888245-1d9b-431c-a068-aa62932e47ec",
        WalletCreateDate = DateTime.Now,
        WalletEnabled = true
    };

    var mockSet = new Mock<DbSet<FAWallet>>();

    var mockContext = new Mock<FinancialAssistantEntities>();
    mockContext.Setup(x => x.FAWallet).Returns(mockSet.Object);

    var walletRepository = new FAWalletRepository(mockContext.Object);
    walletRepository.CreateWallet(wallet).Wait();

    mockSet.Verify(x => x.Add(It.IsAny<FAWallet>()), Times.Once());
    mockContext.Verify(x => x.SaveChangesAsync(), Times.Once()); 
}

, , , .

-, . WalletName, , , .

+4
1

, , . - .

, :

, , , , . , , , . , .. , SaveChanges(), .

.

? :

  • Entity Framework ORM (EF) , ,

  • , EF ​​.

  • EF. .

, , - EF . , :

  • EF
  • - .
  • - - , ( )

.

-: , . , , . ; .

: , . , , . .

; cohesion.

-: , , , . , , ( EF).


,

, , . - , . , " " EF .

+3

Source: https://habr.com/ru/post/1677868/