Здравствуйте, у меня есть веб-API проекта в C #, и я хочу написать модульный тест для проверки моего контроллера.Но я нахожу ошибку, которую я действительно не понимаю.Когда я запускаю свой метод в контроллере
public class TherapistsController : ApiController
{
TherapistService _therapistService = new TherapistService();
GeneralService _generalService = new GeneralService();
//GET: api/Therapists/GetAllTherapists
[HttpGet]
[Route("api/Therapists/GetAllTherapists")]
public IHttpActionResult GetTherapist()
{
var therapists = _therapistService.GetAllTherapist();
if (therapists.Count() > 0)
return Ok(therapists);
return NotFound();
}
}
, он дает мне результат, и это нормально
Но если я запускаю этот метод в модульном тесте
[TestClass]
public class UnitTest1
{
[TestMethod]
public void GetAllTherapistByOutletTest()
{
var therapists = new WebAPI.Controllers.TherapistsController();
IHttpActionResult result = therapists.GetTherapist();
Assert.IsInstanceOfType(result, typeof(OkResult));
}
}
это дает мне ошибку
Как вы видите, ошибка говорит, что мне нужно обновить базу данных путем миграции, ноЭто все еще дает мне ту же ошибку после того, как я перенести и обновить базу данных.Но когда я запускаю метод, вызывая API, он все равно дает мне результат, как на первом рисунке, и без ошибок.Я отлаживаю оба пути, и у них одинаковые шаги, пока метод getAll()
в хранилище не будет, как вы видите на картинке выше.Я действительно не знаю, что не так?
Репозиторий
public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
protected readonly SpaDbContext db;
public GenericRepository(SpaDbContext _db)
{
this.db = _db;
}
public void Add(TEntity entity)
{
db.Set<TEntity>().Add(entity);
}
public void AddRange(IEnumerable<TEntity> entities)
{
db.Set<TEntity>().AddRange(entities);
}
public void Detached(TEntity entity)
{
db.Entry<TEntity>(entity).State = EntityState.Detached;
}
public IEnumerable<TEntity> Find(Expression<Func<TEntity, bool>> predicate)
{
return db.Set<TEntity>().Where(predicate);
}
public TEntity Get(Expression<Func<TEntity, bool>> predicate)
{
return db.Set<TEntity>().FirstOrDefault(predicate);
}
public TEntity Get(object Id)
{
return db.Set<TEntity>().Find(Id);
}
public IEnumerable<TEntity> GetAll()
{
return db.Set<TEntity>().ToList();
}
public void Remove(TEntity entity)
{
db.Set<TEntity>().Remove(entity);
}
IRepository
namespace Repository
{
public interface IGenericRepository<TEntity> where TEntity : class
{
IEnumerable<TEntity> GetAll();
IEnumerable<TEntity> Find(Expression<Func<TEntity, bool>> predicate);
TEntity Get(Expression<Func<TEntity, bool>> predicate);
TEntity Get(object Id);
void Add(TEntity entity);
void AddRange(IEnumerable<TEntity> entities);
void Update(TEntity entity);
//void Remove(object Id);
void Remove(TEntity entity);
void RemoveRange(IEnumerable<TEntity> entities);
void Detached(TEntity entity);
IEnumerable<TEntity> GetByQuery(string query);
}
}