üzerinde test başarısız Birim testi bunu test etmek mümkün mü? EF Entry.State
public class MyRepository<T> where T : IdentityUser, new()
{
public async Task UpdateAsync(T user)
{
_context.Entry(user).State = EntityState.Modified;
_context.Entry(user).Property("UserName").IsModified = false;
await _context.SaveChangesAsync();
}
}
[TestInitialize] deposunda
_user = new IdentityUser { Id = "70a038cdde40" };
IDbSet<IdentityUser> users = new FakeDbSet<IdentityUser> { _user };
var dbContext = new Mock<MyDbContext<IdentityUser>>();
dbContext.Setup(x => x.Users).Returns(() => users);
_repository = new MyRepository<IdentityUser>(dbContext.Object);
1 kullanıcıyı ekler ve bu
private MyRepository<IdentityUser> _repository;
[TestMethod]
public async Task UpdateUser_Success2()
{
var user = await _repository.FindByIdAsync("70a038cdde40");
Assert.IsFalse(user.EmailConfirmed, "User.EmailConfirmed is True");
user.EmailConfirmed = true;
await _repository.UpdateAsync(user);
(...)
}
ile test etmek çalışıyorum Ama UpdateAsync 1. satırda ölür. Test yanlış mı yoksa UpdateAsync uygulaması mı? Test edebileceğim herhangi bir yolu var mı? olmayan bir sanal üyesinde geçersiz kurulum: Belogix sanırım, ama yine de sanal olmayan hata var, daha yakın beni alır
dbContext.Setup(x => x.Entry(It.IsAny<IdentityUser>()))
.Returns(() => dbContext.Object.Entry(_user));
önerdiği gibi
Düzenleme
ekledim: x => x.Entry (It.IsAny())
Eğer testi? Bir şey ya da gerçek bir şey alay (bir DB işaret)? İlgili parçaları gömdünüz mü? – Belogix
@Belogix Sorularıma cevap verdiğimi umuyoruz – kooshka
Hayır, yakınım ama cevabınıza bakarsanız 'Entry' ile 'user' değil 'State' i dönmek için alay etmeniz gerekir. Öyleyse, 'Entry' alayımı örneğimi kullan ve tekrar dene ... Bu şekilde, sahte nesne üzerinde devleti vs. ayarlayabilirsin. Umarım bu mantıklıdır! – Belogix