не судите строго, но объясните на примере. Как правильно составить (вообще) как составить unit-тест, например для подобного кода?
if vDoc.ClassID.InheritsFromClass(КПДокументНаПериод) and (позФИКСЦЕНА >= 0 or позНДСФИКСЦЕНА >= 0 or позСУММАФЦЗАПЕРИОД >= 0) then begin netStrok := false; var ДопСостоянияДистр := ArrayToComma([СостояниеДистрибутива.Подключен, СостояниеДистрибутива.НаСкладе]); var ДатаНачала := EndOfDay(ToDate(vDoc.GetAttrValuesByName('ДатаНачала'))); if fSN.AsString <> '' then ТекДистрибутив := Номенклатура.ВернутьДистрибутив(vDoc.Клиент, CommaGet(fSN.AsString, 0), Номенклатура(fArticle.AsInteger), ДопСостоянияДистр, ДатаНачала); if assigned(ТекДистрибутив) then var ФиксЦена := Rat.EvalQuery( SQLText !Select Reg.DistrFixedPrice From RegChangeDistributiv Reg Where Reg.Distributiv = &ToInt(ТекДистрибутив)& and Reg.BeginDate <= &ToStr(ДатаНачала)& and Reg.EndDate > &ToStr(ДатаНачала)& and IsWorked = -1 Order by Reg.BeginDate desc! end); ФиксЦена := ToFloat(ФиксЦена); if позФИКСЦЕНА >= 0 then vMas[i, позФИКСЦЕНА] := ФиксЦена; if позНДСФИКСЦЕНА >= 0 then vMas[i, позНДСФИКСЦЕНА] := Round(ToFloat(ФиксЦена) * fNDSRate.AsFloat / 100, 2, 1); if позСУММАФЦЗАПЕРИОД >= 0 then begin var ДатаОкончания := EndOfDay(ToDate(vDoc.GetAttrValuesByName('ДатаОкончания'))); var КолМес := Функции_мат.КолМесяцев(ДатаНачала, ДатаОкончания); vMas[i, позСУММАФЦЗАПЕРИОД] := ФиксЦена * КолМес; end;
Т.е. на выходе будем иметь ФИКСЦЕНА или НДСФИКСЦЕНА или СУММАФЦЗАПЕРИОД. Как правильно изолироваться от реальных объектов и переменных? Мне нужно объяснить это на пальцах, а лучше показать пример программисту, чтобы мотивировать его на создание собственных юнит-тестов. :)
Спасибо