Допустим, у меня есть следующий тип данных:тестирования пользовательские типы данных, которые не реализуют уравнение
data Animal = Characteristics [Char] (Set.Set [Char])
и некоторые функции
checkAnimalType :: [Char] -> Animal -> [Animal]
теперь я пытаюсь написать hspec тесты для этого как так:
describe "checkAnimalType" $ do
it "returns a list of animals" $ do
(checkAnimalType ["foo", "coo", "doo", "bar", "moo"](Characteristics "foo" $ Set.fromList(["foo", "coo"]))) $ `shouldBe` [(Characteristics "foo" $ Set.fromList(["cockadoodledoo"]))]
это терпит неудачу с:
No instance for (Eq Animal) arising from a use of ‘shouldBe’
Вопрос в том, можно ли временно, в рамках испытаний, реализовать Eq typeclass на Animal
? Или есть лучший способ сделать это?
Вы можете делать 'выведение Eq' при объявлении' Animal' или реализовать свои собственные экземпляры для 'Eq'. – Sibi
, но можно ли вывести тест без получения фактического источника? –
вы можете написать свою собственную декларацию экземпляра; должен использовать внутренний оператор '(==)', который предоставляется 'Eq', поэтому вы не можете его протестировать – epsilonhalbe