Невозможно назначить строки для результатов bool в задачах asyn c - PullRequest
0 голосов
/ 29 января 2020

У меня есть такой сценарий:
У меня есть асинхронный c метод задачи, в этот метод включены 3 задания, и все они возвращают логические результаты (true / false). Основная цель этого кода - создать одну проблему JIRA, если все три задания возвращают значение false (эта часть работает довольно хорошо), но если есть один или два результата false из трех, он должен создать два (в случае 2-х ложных) отдельных вопросов JIRA.

Вот код:

public static async Task TaskArray(string urlTypeId, int ID, string l)
{
    async Task<bool> t1()
    {
        bool result = true;

        try
        {
            FindElement(driver, SelectorTypes.ByXpath, "xpath");
        }
        catch { result = false; TestResult(ID, ErrorText(1), driver, urlTypeId, l); }

        return result;
    }

    async Task<bool> t2()
    {
        bool result = true;

        try
        {
            FindElement(driver, SelectorTypes.ByXpath, "xpath");
        }
        catch { result = false; TestResult(ID, ErrorText(2), driver, urlTypeId, l); }

        return result;
    }

    async Task<bool> t3()
    {
        bool result = true;

        try
        {
            FindElement(driver, SelectorTypes.ByXpath, "xpath");
        }
        catch (Exception e) { result = false; (ID, ErrorText(3), driver, urlTypeId, l); }

        return result;
    }


    //Creating ticket(s)
    {
        Task<bool> bee = t1();
        Task<bool> geo = t2();
        Task<bool> mag = t3();

        if (await bee == false && await geo == false && await mag == false)
        {
            // all results are false, creating 1 ticket

            CreateTicket(ID, GErrorText(4), driver, urlTypeId, l, "Main", "Desktop", "Website", "SB", "All");
        }
        else
        {
            //1 or 2 false result(s) create ticket for each false   
            var BooleanArray = new bool[] { await bee, await geo, await mag };
            var NamesArray = new string[] { "John", "George", "Nick" };

            foreach (Boolean value in BooleanArray)
            {
                if (value == false)
                {
                    CreateTicket(ID, ErrorText("string"), driver, urlTypeId, l, "Main", "Desktop", "Website", "SB", NamesArray[j]);
                }
            }
        }
    }

В последнем else Я пытаюсь:

  1. Получить сумму false результатов;
  2. Укажите, какие из них возвращают ложный результат из трех («пчела», «гео», «маг»);
  3. Go до foreach и создайте билет JIRA, который передаст правильные ErrorTexts в качестве одного из параметров, а также получит правильную строку от NamesArray

Я знаю, что это слишком сложно, поэтому я приведу пример полного сценария ниже:

  1. Если все три задания возвращают значение false, создается один билет (как я уже упоминал ранее, это case работает нормально);
  2. Если из трех получено 2 false результатов, оно переходит к последнему другому и дважды завершает foreach (поскольку у нас есть 2 ложных результата). При каждом входе в foreach параметры, передаваемые методу CreateTicket, не являются stati c, а динамически c. Например: если «t1» и «t2» возвращают ложный результат, необходимо выполнить следующую операцию:

CreateTicket (ID, ErrorText (1), драйвер, urlTypeId, l, " Main "," Desktop "," Website "," SB "," John ");

, а затем

CreateTicket (ID, ErrorText (2), драйвер , urlTypeId, l, "Main", "Desktop", "Website", "SB", "George");

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

Заранее спасибо.

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