Модульный тест для функции в C # с использованием Moq - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь написать модульные тесты для приведенной ниже функции в C #, используя Moq, но я нахожу слегка перегруженным, оборачиваясь вокруг проверки и других концепций Moq.

public X509Certificate GetCertificate(string certificateName)
        {
            var settingOverride = this.settings.SecretOverridesSetting.FirstOrDefault(secret => secret.Name.Equals(certificateName, StringComparison.InvariantCultureIgnoreCase));
            if (settingOverride != null)
            {
                X509Certificate targetCertificate;
                var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
                store.Open(OpenFlags.ReadOnly);
                X509Certificate2Collection certColl = store.Certificates.Find(X509FindType.FindByThumbprint, settingOverride.Value, false);
                if (certColl.Count == 0)
                {
                    return null;
                }

                targetCertificate = certColl[0];
                store.Close();
                return targetCertificate;
            }
            else
            {
                return SecretStoreClientHelper.GetCertificate(certificateName);
            }
        }

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

1 Ответ

0 голосов
/ 04 октября 2018

Вам необходимо провести рефакторинг этого кода таким образом, чтобы он не был тесно связан с какой-либо реализацией.Потому что вы не можете высмеивать не виртуальные методы классов, используя MOQ.

Пожалуйста, обратитесь к ссылке https://github.com/Moq/moq4/wiki/Quickstart для более подробной информации о создании методов тестирования с использованием MOQ.

...