0

私たちの Hakyll コードベースのために、いくつかのヘルパー メソッドを作成し、新しいものにいくつかの HSpec 単体テストを追加し始めました。

-- | Reject an item unless @fieldName@ is set to "true"
unlessEnabled :: MonadMetadata m
              => String
              -> Item a
              -> m Bool
unlessEnabled fieldName item = do
    maybeValue <- getMetadataBool (itemIdentifier item) fieldName
    return $ maybe True not maybeValue

-- | Try to look up a boolean field ("true" maps to @Just True@)
getMetadataBool :: MonadMetadata m
                => Identifier
                -> String
                -> m (Maybe Bool)
getMetadataBool ident name = do
    maybeString <- getMetadataField ident name
    return $ ((== "true") . map toLower) <$> maybeString

Itemテスト用にorを作成するのは簡単ですが、Hspec を実行するときにIdentifierをどこに使用すればよいかわかりません。MonadMetadata

私はそれがコピー可能/有用かもしれない(インスタンスを持っているtestCompiler)ように感じるのを見てきましたが、私はここで私のHaskellの深さから外れています...CompilerMonadMetadata

4

1 に答える 1