Модульное тестирование xunit Следующие параметры конструктора не имеют соответствующих данных о приборах - PullRequest
0 голосов
/ 25 июня 2019

Следующие параметры конструктора не имели соответствующих данных о приборах для модульного тестирования с использованием moq и xunit.

Уже используется внедрение зависимостей и макет для проверки класса.

//this is how i register the DI.
services.AddScoped<IWaktuSolatServiceApi, WaktuSolatServiceApi>(); 


 public interface IWaktuSolatServiceApi
 {
    Task<Solat> GetAsyncSet();
 }


// the unit test. 
public class UnitTest1 
{
    Mock<IWaktuSolatServiceApi> waktu;

    public UnitTest1(IWaktuSolatServiceApi waktu)
    {
        this.waktu = new Mock<IWaktuSolatServiceApi>();
    }

    [Fact]
    public async Task ShoudReturn()
    {
        var request = new Solat
        {
            zone = "lala"
        };

        var response = waktu.Setup(x => 
        x.GetAsyncSet()).Returns(Task.FromResult(request));
    }
}

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

1 Ответ

1 голос
/ 25 июня 2019

Xunit не использует DI для разрешения ссылок.

Удалите аргумент конструктора.Который, по крайней мере в вашем примере кода, в любом случае не используется.

// the unit test. 
public class UnitTest1 
{
    Mock<IWaktuSolatServiceApi> waktu;

    /// HERE, remove the parameter
    public UnitTest1()
    {
        this.waktu = new Mock<IWaktuSolatServiceApi>();
    }

    [Fact]
    public async Task ShoudReturn()
    {
        var request = new Solat
        {
            zone = "lala"
        };

        var response = waktu.Setup(x => 
        x.GetAsyncSet()).Returns(Task.FromResult(request));
    }
}
...