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)
{
{
try
{
context.FAWallet.Add(model);
await context.SaveChangesAsync();
return true;
}
catch (Exception ex)
{
throw ex;
}
}
}
}
TestMethod:
[TestMethod]
public void CreateWalletTest()
{
var wallet = new FAWallet()
{
WalletId = Guid.NewGuid(),
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, , , .