前提
- GHC: version 8.8.4
- hspec: 2.10.0
- OS: Ubuntu 22.04
実現したいこと
Haskellのhspecを用いたユニットテストで、IO出力する関数をテストすること。
(hspecのshouldReturn
の使い方を間違えている可能性を疑っています)
発生している問題・エラーメッセージ
hspec公式ドキュメントを参考にテストを作成しましたが、エラーが発生します。
まず、テスト対象関数は、Falseモジュールで定義したversion関数です。
Haskell
1module False where 2 3-- |The 'version' print false command version. 4version :: IO () 5version = putStrLn "version 0.1.0"
次に、上記のFalse.version関数をテストするためにspecを定義しました。
Haskell
1module Main where 2 3import Test.Hspec 4import False 5 6main :: IO () 7main = hspec $ do 8 describe "false command unit test" $ do 9 it "print false command version" $ do 10 version `shouldReturn` Left "version 0.1.0"
この状態でテストを実施すると、以下のエラーが発生します。
/home/nao/Desktop/hs-coreutils/test/false/falseSpec.hs:10:36: error: • Couldn't match expected type ‘()’ with actual type ‘Either String b0’ • In the second argument of ‘shouldReturn’, namely ‘Left "version 0.1.0"’ In a stmt of a 'do' block: version `shouldReturn` Left "version 0.1.0" In the second argument of ‘($)’, namely ‘do version `shouldReturn` Left "version 0.1.0"’ | 10 | version `shouldReturn` Left "version 0.1.0" | ^^^^^^^^^^^^^^^^^^^^^ Progress 1/2
該当のソースコード
- https://github.com/nao1215/hs-coreutils/blob/main/src/false/False.hs
- https://github.com/nao1215/hs-coreutils/blob/main/test/false/falseSpec.hs
試したこと
- 公式ドキュメント調査
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。