- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 Haskell,我想做 TDD。
我正在尝试测试函数是否引发预期异常。
我正在使用 HUnit 和 testpack .
testpack 提供了一个 assertRaises 函数,但我无法编译我的代码 :(
这是我的源代码:
module Main where
import Test.HUnit
import Test.HUnit.Tools
import Control.Exception
foo n | n > 2 = throw ( IndexOutOfBounds ( "Index out of bounds : " ++ ( show n ) ) )
foo n | otherwise = n
testException = TestCase( assertRaises "throw exception" ( IndexOutOfBounds "Index out of bounds : 4" ) ( foo 4 ) )
main = runTestTT ( TestList [ testException ] )
test_exceptions.hs:10:107:
No instance for (Ord (IO a0))
arising from a use of `foo'
Possible fix: add an instance declaration for (Ord (IO a0))
In the third argument of `assertRaises', namely `(foo 4)'
In the first argument of `TestCase', namely
`(assertRaises
"throw exception"
(IndexOutOfBounds "Index out of bounds : 4")
(foo 4))'
In the expression:
TestCase
(assertRaises
"throw exception"
(IndexOutOfBounds "Index out of bounds : 4")
(foo 4))
test_exceptions.hs:10:111:
No instance for (Num (IO a0))
arising from the literal `4'
Possible fix: add an instance declaration for (Num (IO a0))
In the first argument of `foo', namely `4'
In the third argument of `assertRaises', namely `(foo 4)'
In the first argument of `TestCase', namely
`(assertRaises
"throw exception"
(IndexOutOfBounds "Index out of bounds : 4")
(foo 4))'
最佳答案
assertRaises
期望它的第三个参数是 IO 操作(类型为 IO a
),但返回类型来自 foo
是一个数字(类型为 (Num a, Ord a) => a
),而不是 IO 操作。
尝试更换 (foo 4)
与 (evaluate (foo 4))
.
关于exception - 如何在 Haskell 中使用 testpack 中的 assertRaises?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9597700/
是否可以将 assertRaises 用于多种类型的异常。就像是 assertRaises(RuntimeError, "error message") assertRaises(Exception,
我有一个小代码如下,请帮助我如何以正确的方式编写它。我想检查 ID 是否存在于 value 中,如果不存在则引发异常。 value = ({'av' : '123', 'user' : 'abc',
我正在为 unit test in Django 使用 assertRaises . 我要测试的示例方法: def example_method(var, optional_var=None):
以下问题是由this post中的讨论引发的. 假设有两个文件(foobar.py 和 foobar_unittest.py)。文件 foobar.py 包含一个具有两个函数(foo 和 bar)的类
我有这个脚本 import unittest,itertools,random ##testclass class Testcomb(unittest.TestCase): def test
assertRaises 使用以下代码给出断言错误。我做错了什么吗? class File_too_small(Exception): "Check file size" def foo(a,
说我有课 class myClass(object): pname = "" def __getName(self): return pname def __setNam
我从 python.org unittest 文档中逐字复制了这个: import random import unittest class TestSequenceFunctions(unittes
我正在尝试测试异常。 我有: def test_set_catch_status_exception(self): mro = self.mro NEW_STATUS = 'No su
当测试传递给它的无效文件的 ImageField 时,Django 断言不会引发ValidationError。这是在 with self.assertRaises 上下文中完成的。但是,当我访问 f
感谢您提前提供的帮助。 我正在尝试测试以下类方法: def _get_ldap_connection(self): """ Instantiate and return simplel
def test_invalid_host(self): controller = SSHController("host name") self.assertRaises(SSHEx
我正在为 python 项目创建测试。正常测试工作得很好,但是我想测试在某种情况下我的函数是否引发了自定义异常。因此我想使用 assertRaises(Exception, Function)。有什么
我想知道是否有办法做到以下几点: class Test_Vector_test(unittest.TestCase): def test_add(self): vector1
我有一些代码,我正在测试一个包装异常,当它失败并且异常传播时,我认为错误消息和回溯不够详细,主要是因为它没有告诉我预期与. 测试,我想要异常和期望的详细信息。 我调整了我的测试(参见下面的示例代码)。
我正在尝试在条件引发自定义异常消息的函数内 assertRaise 异常。 功能: if not Cart.objects.filter(member=member).count(): rai
我遇到了以下相当奇怪的问题: 我正在开发一个 Django 应用程序,在我的模型类中,我定义了一个在验证失败时应该引发的异常: class MissingValueException(Exceptio
我的模型中有以下验证功能: @classmethod def validate_kind(cls, kind): if kind == 'test': raise Valida
我正在尝试在 Python 中对我的“添加”函数运行测试,但出现错误: 7 E ============================================================
我想捕获代码产生的 TypeError,但不幸的是,unittest 失败了: 代码如下: import unittest
我是一名优秀的程序员,十分优秀!