Как издеваться над классом в модуле Test for Action в MVC - PullRequest
0 голосов
/ 05 ноября 2018

Я внедряю Unit Test на существующем программном обеспечении. Это программное обеспечение находится в ASP.NET MVC, и я хочу проверить возвращение действия контроллера.

Но в этом действии у меня есть код:

 public ActionResult EditProfile(
        string accountId = null,
        string partnership = null,
        AccountType? subscriptionType = null,
        bool forcePartnerUpdate = false)
    {
        var model = new EditProfileModel();
        var account = _authUser.Account;  
        var catalogClient = new CatalogService.CatalogClient(Request.Cookies, Globals.CatalogURL);

Проблема в том, что последняя строка: "new CatalogService.CatalogService ()"

Я использую этот класс в другой части Action:

model.ListBrands = new List<Brands>();
model.ListAvailableBrands = new List<Brands>();
model.ListSubscribedBrands = new List<Brands>();
var brands = catalogClient.GetBrandsWithManufacturer();

Итак, как я могу высмеять это для тестов?

Я думал абстрактно для интерфейса и отправляю, как параметр в действии, но у меня нет запроса в моем NInjectModule на IoC, а в других кодах у этого класса есть другие параметры, поэтому я думаю, что не могу сделать IoC.

Как я могу высмеять это с помощью moq? ​​

Спасибо за помощь.

1 Ответ

0 голосов
/ 05 ноября 2018

Я много думал и тестировал, и теперь я должен делать макет для моих тестов.

Сначала я создал "Фабрику" для своего класса:

public interface ICatalogClientFactory
{
    ICatalogClient Create(HttpCookieCollection cookies, string catalogUrl);
}

public class CatalogClientFactory : ICatalogClientFactory
{
    public ICatalogClient Create(HttpCookieCollection cookies, string catalogUrl)
    {
        return new CatalogClient(cookies, catalogUrl);
    }
}

Чем этот интерфейс я зарегистрировал в NinjectModule и установил в конструкторе контроллера. Итак, я призываю свои действия с этим кодом:

  ICatalogClientFactory _catalogClientFactory = catalogClientFactory;
  var clientCatalog = _catalogClientFactory.Create(Request.Cookies, Globals.CatalogURL);

Теперь я могу смоделировать «ICatalogClientFactory» и «ICatalogClient» для использования в модульных тестах.

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