NSubstitute: Mocking REST API, возвращаемый результат на основе значения параметра - PullRequest
0 голосов
/ 24 октября 2018

Я использую NSubstitute, чтобы смоделировать результат REST API servicestack, который возвращает объект сотрудника.

var mockedCoreService = Substitute.For<jsonClient>(ApiUrl); 

//Create the employee to return for mocking
var employee = new EmployeeDTO { SSN = "123695874"};

// Get the mocked employee whenver GetEmployee API call is made
mockedCoreService.Get(Arg.Any<GetEmployee>()).Returns(employee);

Вызов API Getemployee принимает Id в качестве параметра, я хочу вернуть другого сотрудника на основе отправленного Id.

//check the id parameter of GetEmployee and return employee based on the condition in below statement  
    mockedCoreService.Get(Arg.Any<GetEmployee>()).Returns(employee);

Я не уверен, как это сделать.Пожалуйста, помогите.

Спасибо, Amol

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Другой подход - создать возвращенный экземпляр "на лету".Returns предоставляет методы перегрузки, которые принимают функцию, которая возвращает ожидаемое значение.
Таким образом, вы можете генерировать возвращаемые значения на основе полученных аргументов.

fakeService.Get(null)
           .ReturnForAnyArgs(call => new Employee { Id = call.Arg<GetEmployee>().Id });
0 голосов
/ 24 октября 2018

Сам нашел ответ

 mockedCoreService.Get(Arg.Is<GetEmployee>(x=>x.id == 1)).Returns(employee);

 mockedCoreService.Get(Arg.Is<GetEmployee>(x => x.id== 2)).Returns(employee2);
...