user 3008 Ответов: 1

Макет метода, который используется в контроллере


У меня есть следующий метод в контроллере.

public async Task


Где CientId использует следующий метод в том же контроллере

public Guid CientId
       {
           get
           {
               Guid clientIdParam;
               Guid.TryParse(Request.QueryString["clientId"], out clientIdParam);

               return clientIdParam;
           }
           set{ }
       }


Теперь я пытаюсь написать блок для вышеприведенного метода контроллера, в котором я хочу издеваться над строкой модель.Параметр ClientID = CientId

До сих пор я пробовал следующий тест

[Test]
       public async void Edit_edits_booking_form_settings()
       {
           //Arrange
           BookingFormSettingsController controller = Substitute.ForPartsOf


Может ли кто-нибудь, пожалуйста, помочь мне починить линию, о которой я упоминал .

Что я уже пробовал:

Я попробовал использовать частичную замену, automockcontroller

F-ES Sitecore

Мы действительно не можем видеть ваш код, обновите свой вопрос, чтобы улучшить его. Однако будьте готовы к разочарованию, поскольку вы издеваетесь не над отдельными строками, а над целыми классами.

1 Ответов

Рейтинг:
1

David_Wimbley

На самом деле здесь недостаточно одного, но одна проблема заключается в том, что вы создаете зависимость по запросу.строки запроса. Поскольку это MVC, почему бы не добавить его как часть вашей модели?

Кроме того, еще одно замечание об этом заключается в том, что фрагмент кода ClientId, о котором вы упомянули, находится внутри вашего контроллера. Если это так, то вы нарушаете правила шаблона MVC и должны перенести их в свою модель.

Однако взгляните на следующие ссылки. Возможно, вам придется немного изменить свой подход к модульному тестированию, чтобы высмеять то, что вы хотите, но это, по крайней мере, должно помочь.

как издеваться над запросом querystring - поиск Google[^]

c# - Как установить значение строки запроса в методе тестирования Moq - Stack Overflow[^]