Как издеваться над конкретной функцией - PullRequest
2 голосов
/ 05 апреля 2019

Итак, я настраиваю функцию, но у меня есть 2 разных параметра, которые я хочу попробовать настроить, и у меня разные возвращаемые значения, как мне это сделать?

mockStateFixture.MockCouchDbClient.Setup(x => x.AuthenticatedQuery(
   //It.IsAny<Func<HttpClient, Task<HttpResponseMessage>>>(), First Parameter Function# 1: GetProfileByUpn Function
   NamedHttpClients.COUCHDB,
   httpClient))
  .ReturnsAsync(httpResponseMessageForProfileRecordByUpn);


mockStateFixture.MockCouchDbClient.Setup(x => x.AuthenticatedQuery(
    //It.IsAny<Func<HttpClient, Task<HttpResponseMessage>>>(), First Parameter Function# 2: UpdateProfile Function
    NamedHttpClients.COUCHDB,
    httpClient))
   .ReturnsAsync(httpResponseMessageForCreatedReturnResult);

поэтому 1-й должен иметь параметры, отличные от 2-го, у них 1-е параметры.

Я настраиваю одну функцию под названием AuthenticatedQuery, но у нее разные параметры, как мне настроить разные параметры?

Ответы [ 2 ]

3 голосов
/ 05 апреля 2019

Похоже, вы не сможете различить 2 звонка, которые вы показываете при настройке. Я не уверен, как вы будете различать 2 звонка.

Вы можете попробовать SetupSequence , если вы знаете порядок 2 вызовов.

mockStateFixture.MockCouchDbClient.SetupSequence(x => x.AuthenticatedQuery(
    It.IsAny<Func<HttpClient, Task<HttpResponseMessage>>>(),
    NamedHttpClients.COUCHDB,
    httpClient))
  .ReturnsAsync(httpResponseMessageForProfileRecordByUpn)
  .ReturnsAsync(httpResponseMessageForCreatedReturnResult);

Ответы будут в порядке, указанном вами после вызова SetupSequence().

Я не пробовал этого, поэтому я не совсем уверен, что ReturnsAsync() может быть зацеплен таким образом.

1 голос
/ 05 апреля 2019

Попробуйте FakeItEasy -

IMockedInterface mock = A.Fake<IMockedInterface>();

Object result1 = new {};
Object result2 = new {};

A.CallTo(() => mock.MethodName(1)).Returns(Object1);
A.CallTo(() => mock.MethodName(2)).Returns(Object2);
...