【发布时间】:2015-07-12 10:03:31
【问题描述】:
我是单元测试的初学者,在使用 ApplicationDbContext 的帐户控制器中测试我的一些方法时遇到问题。我一直在关注本教程:
http://www.asp.net/web-api/overview/testing-and-debugging/mocking-entity-framework-when-unit-testing-aspnet-web-api-2
但我似乎无法访问与 applicationUser 相关的一些变量。在我的帐户控制器中,我可以访问从其超类“IdentityUser”继承的 ID、用户名、电子邮件等,但由于某种原因,我似乎无法在我的测试控制器中访问这些变量。到目前为止,我有以下实现:
interface IStoreAppContext : IDisposable
{
DbSet<ApplicationUser> Users { get; }
int SaveChanges();
void MarkAsModified(ApplicationUser item);
}
我的 IdentityModel 类:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IStoreAppContext
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public DbSet<SportProgram> SportContext {get; set;}
public DbSet<Exercise> ExerciseContext { get; set; }
public DbSet<ExerciseImage> ExerciseImageContext { get; set; }
public DbSet<Store> StoreContext { get; set; }
public void MarkAsModified(ApplicationUser item)
{
Entry(item).State = EntityState.Modified;
}
我已将以下内容添加到我的 AccountController:
private IStoreAppContext db2 = new ApplicationDbContext();
// add these contructors
public AccountController() { }
public AccountController(IStoreAppContext context)
{
db2 = context;
}
在我的测试项目中:
class TestProductDbSet : TestDbSet<ApplicationUser>
{
public override ApplicationUser Find(params object[] keyValues)
{
return this.SingleOrDefault(user => user. == (int)keyValues.Single());
}
上面的返回行是我遇到此问题的第一个地方。我有“user => user.”,当 Visual Studio 在“.”之后提供我的建议时ApplicationUser 类给我的所有变量都是我添加的变量,我似乎无法访问从 IdentityUser 类继承的 ApplicationUser Id、用户名、电子邮件。有人可以帮忙吗?
这是我的测试项目中的另一个类,可以帮助你:
class TestStoreAppContext : IStoreAppContext
{
public TestStoreAppContext()
{
this.Products = new TestProductDbSet();
}
public DbSet<ApplicationUser> Products { get; set; }
public int SaveChanges()
{
return 0;
}
public void MarkAsModified(ApplicationUser item) { }
public void Dispose() { }
}
【问题讨论】:
标签: c# entity-framework unit-testing