NSubstitute.Exceptions.ReceivedCallsException: ожидается получение ошибки сопоставления вызовов при модульном тестировании. - PullRequest
0 голосов
/ 16 января 2020

Я получаю сообщение об ошибке ниже при модульном тестировании фрагмента кода

NSubstitute.Exceptions.ReceivedCallsException: Ожидается, что при вызове модульного тестирования будет получена ошибка совпадения вызова NSubstitute.Exceptions.ReceivedCallsException HResult = 0x80131500 Сообщение = Ожидается получение соответствующего вызова: enrollWithHelper ("", "") Фактически не получено ни одного соответствующего вызова.

Источник = NSubstitute StackTrace: at NSubstitute.Core.ReceivedCallsExceptionThrower.Throw (ICallSpecification callSpecification, IEnumerable 1 matchingCalls, IEnumerable 1 nonMatchingCalls, количество, требуемое количество) в NSubstitute.Routing.Handlers.CheckReceivedCallsHandler.Handle (вызов ICall) в NSubstitute.Routing.Route.Handle (вызов ICall) в NSubstitute.Proxies.CastleDynamicProxy.ColleForward.Inococ AbstractInvocation.Proceed () в Castle.DynamicProxy.AbstractInvocation.Proceed () в Castle.Proxies.ObjectProxy_1.enrollWithHelper (имя строки, тип строки) в MyProject.MyTest.pr ocessing_test_pass () в C: \ MyProject \ MyTest.cs: строка 75

Framework :. NET Core

Модульное тестирование : NSubstitute

Вот мой тестируемый класс

 public class MyService: IMysService
 {
   private readonly IRepository _repository;
   Private readonly IIoTHelper _iotHelper;  
   Private readonly HttpClient _httpClient;
   private Configuration _configuration; 

   public MyService(IRepository repository, IIoTHelper iotHelper, HttpClient httpClient )
   {
        _repository = repository;
        _iotHelper =iotHelper;
        _httpClient = httpClient ;
   }

   public bool CallService(JObject reqObj, out Status status)
   {
        bool provisioningSuccess = false;
        return PreProcessing(reqObj,out Status status); //private method
   }
}

Вот мой личный метод

    private PreProcessing(JObject JosnObj, out Status status)
    {
        if (_configuration== null)
        {
            _configuration= _repository.GetConfigurations()                 
        }

       using (var client = this._httpClient)
       {
            var request = new {_configuration.Number,_configuration.Type};
            var response = client.PostAsJsonAsync("api/preprocess", request).Result;

            if (response.IsSuccessStatusCode)
            {
                  _iotHelper.enrollWithHelper(_configuration.Number,_configuration.Type);
            }
       }
    }

Вот мой класс конфигурации

   public class Configuration 
   {
     public Configuration (string number, string type)
     {
        Number= number;
        Type= type;
     }      
     public string Number { get;}

     public string Type { get; }

   }

Вот мой код модульного тестирования, в котором я хочу убедиться, что он достигает private метода

    protected override void InitializeTest()
    {
        this._repository = Substitute.For<IRepository>();
        this._iotHelper = Substitute.For<IIotHelper>();
    }

    [TestMethod]
    public void processing_test_pass()
    {
          //Arrange
        var messageHandler = new MockHttpMessageHandler("TEST VALUE", HttpStatusCode.OK);
        var httpClient = new HttpClient(messageHandler);


          JObject reqobj= new JObject(
          new JProperty("user", "username"),
          new JProperty("pass", "password"));

        Status status = new Status();

        //act
        var t = new MyService(this._repository,this._iotHelper, httpClient );
        bool success = t.CallService(reqobj, out status);
        //assert
        this._iotHelper.Received().enrollWithHelper("","");

    }

Как бы проверить enrollWithHelper называется?

Также Я застрял из-за ошибки!

...