Я получаю сообщение об ошибке ниже при модульном тестировании фрагмента кода
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
называется?
Также Я застрял из-за ошибки!