2016-09-25 12 views
1

failDetails (" details: " ++ baz a) $ 
    a `shouldBe` 2 

그리고 나는 그것이의 라인을 따라 뭔가를 인쇄하고 싶은이 :

expected: 2 
but got: 3 
details: ... 

답변

3

네, 가능합니다 것 같다 :

import Control.Exception 
import Test.HUnit.Lang (HUnitFailure(..)) 

failDetails details assert = do 
    assert `catch` \(HUnitFailure loc msg) -> do 
    throw $ HUnitFailure loc $ msg ++ "\n" ++ details 

우리는 shouldBe에 의해 던져진 예외를 catch, 메시지를 수정하고 그것을 다시 던지십시오. 우리가 정의하는 경우

1 `shouldBe` 2 
    $> failDetails "foobar" 

:

우리는 심지어 그것을 좋아 사용할 수 있습니다

($>) = flip ($) 
infixl 0 $> 
{-# INLINE ($>) #-}