式が検出されたときに失敗する必要がある Haskell で単体テストを作成するundefined
のは少し注意が必要です。HSpecで次のことを試しました:
module Main where
import Test.Hspec
import Control.Exception (evaluate)
main :: IO ()
main = hspec $ do
describe "Test" $ do
it "test case" $ do
evaluate (take 1 $ map (+1) [undefined, 2, 3]) `shouldThrow` anyException
無駄に。それは私を報告しますdid not get expected exception: SomeException
同じ式を REPL で評価すると、次のようになります。
[*** Exception: Prelude.undefined
CallStack (from HasCallStack):
error, called at libraries\base\GHC\Err.hs:79:14 in base:GHC.Err
undefined, called at <interactive>:2:20 in interactive:Ghci1