首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OUnit: assert是类型的实例

OUnit: assert是类型的实例
EN

Stack Overflow用户
提问于 2017-01-04 20:30:21
回答 1查看 493关注 0票数 0

使用OUnit单元测试框架在OCaml中,我想测试一个函数的评估结果是一个指定类型的实例。

在Python的PyTest中定义这样的测试如下:

代码语言:javascript
复制
def test_foo():
    assert isinstance(foo(2), int)

如何将此逻辑转换为OUnit?也就是说,如何指定类型成员关系的断言?

我知道,假设测试中的函数带有正确的类型签名注释,这个测试可能是不必要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-06 19:34:44

这是类型检查器的工作,它是在编译期间(静态时)自动生成的。类型检查器(即编译器)确保由函数创建的所有值都具有相同的类型,并且类型在编译时是静态定义的。您将无法编译一个创建不同类型值的函数,因为您将在编译期间得到一个类型错误。这是所有静态类型化语言的基本属性,例如,Java、C和C++也具有相同的属性。

所以,很可能,你使用的是混乱的术语。可能是这样的,实际上您要测试的是,这个值属于和类型的一个特定变体。例如,如果有一个名为numbers的sum类型定义为:

代码语言:javascript
复制
type t = 
  | Float of float
  | Int of int

您想要测试这个函数truncate,定义为

代码语言:javascript
复制
 let truncate = function
   | Float x -> Int (truncate x)
   | x -> x

始终返回Int变量,然后可以这样做:

代码语言:javascript
复制
  let is_float = function Float _ -> true | _ -> false
  let is_int = function Int _ -> true | _ -> false

  assert (is_int (truncate 3.14))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41472699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档