I realise this question had been asked before. However I tried the previous solutions and none of them worked for me. I am trying to isolate the real DB in order to run the mocking dependency test by using a fake DB context. I create an ApplicationBbContext for this reason, but having difficulties to figure out why do get an error with Application DbContext does not implement interface member error
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.Identity.EntityFramework;
using MVC_ATM.Models;
using System.Data.Entity;
using MVC_ATM.ViewModels;
using MVC_ATM.Migrations;
namespace MVC_ATM.ViewModels
{
public interface IApplicationDbContext
{
IDbSet<CheckingAccount> checkingAccounts { get; set; }
IDbSet<Transaction> Transactions { get; set; }
int SaveChanges();
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IApplicationDbContext //This is the first error
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
base.OnModelCreating(modelBuilder);
}
public IDbSet<CheckingAccount> checkAccounuts { get; set; }
public IDbSet<Transaction> Transactions { get; set; }
}
}
//This IApplication db is made for mock testing
public class FakeApplicationDBContext : IApplicationDbContext //This is the second error
{
public IDbSet<CheckingAccount> checkAccounuts { get; set; }
public IDbSet<Transaction> Transactions { get; set; }
public int SaveChanges()
{
return 0;
}
}
Transactions controller
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVC_ATM.ViewModels;
using MVC_ATM.Models;
namespace MVC_ATM.Controllers
{
[Authorize]
public class AllTransactionsController : Controller
{
private IApplicationDbContext DB;
public AllTransactionsController()
{
DB = new ApplicationDbContext();
}
public AllTransactionsController(IApplicationDbContext DBContext)
{
DB = DBContext;
}
}
}