Вопрос

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

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

Короче говоря, я пытаюсь пройти статический класс (который является как абстрактным, так и герметичным) как аргумент, который ограничивает параметр границей, который я определил (на данный момент только состоит из AWSClientFactory.CreateAmazonS3Client(string, string, RegionEndpoint).

Тем не менее, я не могу понять, как пройти этот класс по ссылке (AWSClientFactory), и благодаря обширным исследованиям я не вижу никакого способа сделать это.

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

Как бы лучше всего реализовать это с той же структурой, в которой идентичные методы называются из разных статических классов?

Это было полезно?

Решение

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

Чтобы достичь того, что вы хотите, вы можете сделать свой собственный интерфейс и сделать некоторые реализации этого интерфейса. Одна из этой реализации завершится AWSClientFactory.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top