繁体   English   中英

测试抛出异常的函数

Testing functions that throw exceptions

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用磁带 ,我正在尝试测试几个功能。 我的函数抛出错误并验证对象。 我喜欢抛出错误,因为后来我的承诺可以抓住它们。 我正在尝试运行简单的测试并在所有场景中建立data参数来命中堆栈中的每个错误。 我怎样才能测试这个功能,而不是每次都把它放在try / catch 我看到API t.throws()t.doesNotThrow()有两个函数,我已经尝试过它们,甚至添加了额外的参数,如t.throws(myFunc({}), Error, "no data")但似乎没有任何工作像预期的那样。

var test = require('tape')
var _ = require('underscore')

function myFunction(data){
  if(!data) throw new Error("no data")
  if(_.size(data) == 0) throw new Error("data is empty")
  if(!data.date) throw new Error("no data date")
  if(!data.messages.length == 0) throw new Error("no messages")
  data.cake = "is a lie"
  return data
}

test("my function", function(t){
  t.throws(myFunction({}))
  t.end()
}

我对录音带没有忠诚度,我也不知道自己在做什么。 我只想简单地测试同步函数,抛出异常,而不需要大量的开销。 因此,如果有一个更好的单元测试框架用于此用例,我很乐意使用它。 如果磁带有这种能力,我很乐意使用它。

这是怎么做的?

test("my function", function(t){
  try{
    myFunction({})
    t.fail()
  }catch(e){
    t.pass(e.message)
  }
  t.end()
})
2 个回复

似乎我无法在t.throws的参数内调用该函数,因为它会抛出错误,呃。 我相信这是正确的用法。

t.throws(function(){
  myFunction({})
})

而不是像上面的评论中建议的绑定,你可以像这样使用箭头函数:

t.throws(() => myFunction({}), 'should throw an exception')

1 有没有不应该抛出异常的函数?

在 C# .Net 中编程时,是否有任何函数抛出异常几乎总是一个“坏主意”? 在 C++ 中,从析构函数抛出异常很少是一个好主意,因为它通常会导致程序终止。 C# .Net 中是否有类似的情况? 我对异常被认为是不好的风格的情况不感兴趣。 我正在寻找抛出异常通常会导致严重问题的地方。 ...

2 Swift:传递引发异常的函数

我有以下玩具示例 这可以顺利进行。 但是,一旦我尝试在身份中抛出异常,如下所示: 类型检查器抱怨带有消息的applyIdentity(identity, t:1)调用: 知道为什么会这样吗? ...

4 如何引发两个函数的异常

很难说出这里的要求。 这个问题是模棱两可的,模糊的,不完整的,过于广泛的或修辞性的,不能以目前的形式合理地回答。 如需帮助澄清此问题以便可以重新打开, 请访 ...

2012-12-11 06:57:13 2 71   c#
5 如何测试抛出异常的函数[重复]

可能重复: 你如何测试Python函数抛出异常? 我必须进行白盒和黑盒测试,所以我想知道如何测试一个异常的函数,比如这个 我已经阅读了一些关于assertRises()但我无法使用此方法导入模块,在stackowerflow上找到了这个: 但我无法使其发挥作用。 ...

7 在虚拟函数中引发异常是否是一种好习惯?

即使解决方案是如此明显,我也不应该发布过此内容,但我将其作为提醒和参考的参考。 我有以下基类: 子类重写ObjectInfo以返回它们要通过反射使用的对象类型的实例。 它们还将覆盖“ Find以进行实际搜索。 这样,我的应用程序代码可以使用基类方法,因此在编译时不必了解有关 ...

2009-04-27 13:47:48 5 472   c#
8 Java字段初始化为抛出异常的函数

我有一个问题,减少到考虑这个类: 这是我的问题:由于getInteger()抛出myClassException并且在初始化s_int时没有try catch块,因此无法编译。 当然,一种解决方案是构建一个getIntegerAndDealWithTheException() ,它 ...

2013-05-22 21:38:50 5 94   java
9 返回Future [A]的函数是否应该引发异常?

我遇到了返回Future并立即引发异常的函数。 例如这样: 这种行为对于调用者来说似乎很烦人,因为您必须执行以下操作才能捕获两个错误: 我已经注意到WSClient在play框架中可以做到这一点(如果URL格式不正确,都会抛出异常,如果HTTP请求失败,则返回Future )。 ...

2015-11-19 11:36:13 1 372   scala
10 所有的OpenCV函数都抛出异常吗?

OpenCV在遇到严重错误时会引发异常 ,但是,在文档中很少(敢说我从来没有)提到过某个特定函数是否引发。 例如,请参阅分水岭算法的文档 我想在错误发生的地方捕获错误,例如,将对分水岭的调用包装在try-catch中。 但是文档没有说明函数是否抛出,因此将其包装在try-catch中可 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM