Есть ли шаблон Резарпера для последовательных утверждений Должно? - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь придумать шаблон Резарпера для применения к последовательным утверждениям Должно. Например, у меня есть эти проверки:

    field1.ShouldNotBeNull();
    field2.ShouldBe(expectedField2Value);

И в этом случае его следует заменить на:

    this.ShouldSatisflyAllConditions(
    () => field1.ShouldNotBeNull(),
    () => field2.ShouldBe(expectedField2Value));

И нет проблем, если это был единственный случай, ноДело в том, что есть много разных возможностей, которые не описаны в шаблонах, которыми я управлял до сих пор. То, что я пытаюсь сделать, это добраться до точки, где в любое время я получаю две или более последовательные проверки любого вида (ShouldBeNull, ShouldNotBeNull, ShouldContain и т. Д.), Я буду предупрежден, чтобы поместить все из них в блок ShouldSatisfyAllConditions, так какесли я оставлю это как отдельное утверждение, тесты прекратятся, как только один из них завершится неудачей, вместо того, чтобы предоставить мне список сбоев в последнем случае. Проблемы, с которыми я сталкиваюсь:

  1. Мне не удалось использовать любое имя поля в шаблоне. Когда я выбираю «Поиск по шаблону», я просто получаю имена этих конкретных полей, которые не применимы ко всему проекту.

РЕДАКТИРОВАТЬ: Моя ошибка. Шаблон, который я пробовал, применяется всякий раз, когда два поля с любым именем утверждаются как отличные от нуля.

Мне не удалось применить это ни к одному из утверждений Должно быть, и я должен указать это в каждом конкретном случае (например, в примере выше). Я получаю только определенные шаблоны вместо более общих. Помимо очень конкретных случаев, я не могу применить это в любое время, когда есть два или более случая. Я должен выбрать каждый шаблон, 2 строки, 3 строки и т. Д.

Я использую VS 17 Enterprise и JetBrains ReSharper Ultimate 2019.2.2. Это:

    $field1$.ShouldNotBeNull();
    $field2$.ShouldNotBeNull();

Заменено на это:

    this.ShouldSatisfyAllConditions(
() => $pageStyleProperty$.ShouldNotBeNull(),
    () => $_editorObject$.ShouldNotBeNull());

1 Ответ

0 голосов
/ 10 октября 2019

Если вы действительно хотите это сделать, вы можете с помощью params Action []

 public void ShouldSatisfyAllConditions(params Action[] assertions)
 {
       foreach (var assertion in assertions)
       {
           assertion?.Invoke();
       }
 }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...