Ошибка при попытке "Seed" макет базы данных в макет dbContext - PullRequest
0 голосов
/ 29 апреля 2020

Я искал переполнение стека для решения этой проблемы, но пока не смог найти тот, который исправляет мою ошибку. Я пытаюсь написать модульный тест для API, который я разработал. Я создал для него фиктивную базу данных и контекст фиктивного контекста, но когда я пытаюсь «заполнить» мой фиктивный контекст, я получаю эту ошибку.

The call is ambiguous between the following methods or properties: 'AppointmentAPI.UnitTests.DbContextExtensions.Seed(AppointmentAPI.Appt_Models.ApptSystemContext)' and 'AppointmentAPI.UnitTests.DbContextExtensions.Seed(AppointmentAPI.Appt_Models.ApptSystemContext)' [AppointmentAPI.UnitTests, AppointmentAPI.UnitTests]

Не совсем уверен, в чем проблема, потому что он работал нормально на днях без ошибок, а затем, когда я начал работать над этим сегодня, появилась ошибка. Я довольно новичок в C# и особенно пишу юнит-тесты для API. net, поэтому любая помощь очень ценится. Я выложу два файла ниже.

DbContextExtensions.cs

namespace AppointmentAPI.UnitTests
{
    using System;
    using AppointmentAPI.Appt_Models;

    public static class DbContextExtensions
    {
        public static void Seed(this ApptSystemContext dbContext)
        {
            // add entities for dbContext instance
            dbContext.AppointmentSlots.Add(new AppointmentSlots
            {
                SlotId = 1,
                Date = Convert.ToDateTime("2020-03-31 00:00:00.000"),
                Time = TimeSpan.Parse("12:00:00.0000000"),
                ApptJson = "{'fname':'Billy','lname':'Joel','age':70,'caseWorker':'Donna', 'appStatus':'finished'}",
                Timestamp = Convert.ToDateTime("2020-02-24 12:00:00.000")
            });

            dbContext.AppointmentSlots.Add(new AppointmentSlots
            {
                SlotId = 6,
                Date = Convert.ToDateTime("2020-07-24 00:00:00.000"),
                Time = TimeSpan.Parse("10:00:00.0000000"),
                ApptJson = "{'fname':'Michael','lname':'Smith','age':52,'caseWorker':'Donna', 'appStatus':'finished'}",
                Timestamp = Convert.ToDateTime("2020-06-25 09:34:00.000")
            });

            dbContext.SaveChanges();
         }
      }
   }

DbContextMocker.cs

namespace AppointmentAPI.UnitTests
{
    using Microsoft.EntityFrameworkCore;
    using AppointmentAPI.Appt_Models;

    public static class DbContextMocker
    {
        public static ApptSystemContext GetApptSystemContext(string dbName)
        {
            // create option for DbContext instance
            var options = new DbContextOptionsBuilder<ApptSystemContext>()
                                        .UseInMemoryDatabase(databaseName: dbName)
                                        .Options;

            // create instance of DbContext
            var dbContext = new ApptSystemContext(options);

            // add entities in memory
            dbContext.Seed(); <-- error happens here

            return dbContext;
        }
    }
}

1 Ответ

0 голосов
/ 01 мая 2020

Это исключение обычно выдается, когда два или более методов перегружены с одинаковым количеством аргументов, но с разными типами

например:

static void Seed(this ApplicationDbContext dbContext, string word1, string[] array = null);
static void Seed(this ApplicationDbContext dbContext, string word1, string word2 = null);

dbContext.Seed("test word"); // will throw the exception or will show as an syntax error.

С двумя вышеупомянутыми файлами я не вижу никаких методы как таковые. Надеемся, что очистка и сборка сработают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...