Не удалось создать фальшивку, когда конструктор по умолчанию для объекта не пуст - PullRequest
0 голосов
/ 23 апреля 2020

Я новичок в FakeItEasy, и у меня есть несколько тестовых случаев, которые использовались для прохождения раньше (когда у меня не было определенных конструкторов c, определенных). Затем я создал конструктор по умолчанию для одного объекта, который я подделываю, конструктор по умолчанию создает только logger.

После того, как я создал этот конструктор, все мои тестовые сценарии теперь терпят неудачу со следующей ошибкой, и я не могу понять, что ему не нравится или как это исправить:

FakeItEasy.Core.FakeCreationException : 
  Failed to create fake of type StorageService.
  Below is a list of reasons for failure per attempted constructor:
    No constructor arguments failed:
      No usable default constructor was found on the type StorageService.
      An exception of type System.NullReferenceException was caught during this call. Its message was:
      Object reference not set to an instance of an object.

Вот мой класс:

public class StorageService : IStorageService
{
    public StorageService()
    {
        Log.Logger = new LoggerConfiguration().ReadFrom.AppSettings().Enrich.FromLogContext().WriteTo.Loggly(
            logglyConfig: new LogglyConfiguration
            {
                //Log Config is here
            }).CreateLogger();
    }

    public async Task<bool> CreateTableIfNotExistsAsync(string storageConnectionString, string tableName)
    {
        // Some code here

        return result;
    }
}

Вот мой тестовый пример:

[Test]
public void create_storage()
{
    FakedStorageService = A.Fake<StorageService>(); // It is failing at this line
    // Some FakeCalls here
}

1 Ответ

3 голосов
/ 23 апреля 2020

Я думаю, что проблема заключается в том, что вы пытаетесь создать подделку реализации вместо интерфейса. Вы можете изменить это так:

FakedStorageService = A.Fake<IStorageService>();
...