Професионална програма
Loading...
a_rusenov avatar a_rusenov 1103 Точки

Здравейте,

Извиняваме се за закъснението, видеото е вече качено. Срокът за предаване на домашно е удължен до неделя 6 септември включително.

Допълнително сме качили лаб по темата за mocking. Във вторник ще пуснем и лаб за integration testing.

1
a.angelov avatar a.angelov 1317 Точки

Благодаря yes smiley

Да си използвам темата и да попитам за един проблем, за който се чудя каква може да е причината:

Става дума за mocking лаба - на т.1 Get All Ads, подточка 1 там където се създава adsController-а:

var adsController = new AdsController(mockContext.Object);

Дава ми грешка, че конструктора на AdsController-а е с 0 параметри, а бил извикан с 1 параметър...

BaseApiController-а ми, който се наследява съответно от AdsController-a, изглежда така:

public class BaseApiController : ApiController
    {
        public BaseApiController()
            : this(new OnlineShopData(new OnlineShopContext()))
        {
        }

        public BaseApiController(IOnlineShopData data)
        {
            this.Data = data;
        }

        public IOnlineShopData Data { get; set; }
    }

И не мога да си обясня, защо дава такава грешка..., би трябвало да вижда, че има конструктор, който приема параметър от тип IOnlineShopData...

0
30/08/2015 13:23:42
a_rusenov avatar a_rusenov 1103 Точки

Не ти се компилира ли? AdsController трябва да има конструктор с 1 параметър, който прави base call.

1
a.angelov avatar a.angelov 1317 Точки

Не знам защо съм решил, че като нямам конструктор в AdsController-а ще се преизползва автоматично този от BaseApiController-а... Сложих както ти каза и вече се компилира нормално. frown Позабравят се явно нещата.

Благодаря!

1
30/08/2015 13:15:13
Petar_Ivanov avatar Petar_Ivanov 27 Точки

Здравейте, 

може ли някой да посте source code как точно става това с конструктора, защото както и да го правя, приложението ми гарми, че няма конструктор без параметри и затова не може да инициализирa AdsControllera-.

Имам още един проблем и той е, че responce.Content.ReadAsStringAsync(); за резултат получавам празен масив и не съм сигурен, да ли така се наглася mockContext-a  mockContext.Setup(m => m.Ads).Returns(this.mocks.AdRepositoryMock.Object);

Благодаря предварително!

0
a.angelov avatar a.angelov 1317 Точки

Конструкторите, които трябва да имаш в AdsController-а /тук е включен вече и IUserIdProvider-а, който трябва да включим по-нататък в лаба, него можеш да го махнеш за първото условие за тестване на Get All Ads/

public AdsController()
            : base()
{
}

public AdsController(IOnlineShopData data, IUserIdProvider userIdProvider)
    : base(data, userIdProvider)
{
}

MockContext-a:

mockContext.Setup(c => c.Ads.All()).Returns(fakeAds);

И response-a:

var adsResponse = response.Content
                .ReadAsAsync<IEnumerable<AdViewModel>>()

и т.н. продължаваш с останалата част от условието.

 

2
30/08/2015 17:51:30