Как увеличить охват для типов записи с линзами?

Задний план

Я использую типы записей с линзой . Я написал несколько модульных тестов с помощью HUnit и HSpec.

Однако отчет о покрытии HPC показывает, что методы доступа к полям никогда не выполнялись.

Таким образом, способствуя более низкому охвату типов записей.

Пример

data MetricValue =
  MetricValue { _average   :: Maybe Scientific
              , _count     :: Maybe Scientific
              , _maximum   :: Maybe Scientific
              , _minimum   :: Maybe Scientific
              , _timeStamp :: Text
              , _total     :: Maybe Scientific
              } deriving (Generic, Show)

makeLenses ''MetricValue

Поля _average, _count, _maximum и т. д. были выделены желтым цветом, что указывает на то, что они никогда не выполнялись.

Вопросы

Как улучшить покрытие?

Как мне, вероятно, проверить типы записи с линзами?


person Gavin    schedule 14.10.2018    source источник
comment
Просто игнорируйте предупреждения о покрытии. Писать тесты для методов доступа к полям — пустая трата времени — они никогда не могут пойти не так.   -  person Benjamin Hodgson♦    schedule 14.10.2018


Ответы (1)


makeLenses не выполняет функции доступа к полям _average etc, он просто использует их для создания линз.

Если вы пишете код, использующий aValue ^. average, то объектив будет вызывать функцию _average.

person Paul Johnson    schedule 15.10.2018
comment
Привет, Пол, спасибо, но аксессуары помечены как «никогда не выполнялись», хотя объективы были названы в тестах. - person Gavin; 15.10.2018