如何检查函数是不是在 DOH 中引发错误?

Posted

技术标签:

【中文标题】如何检查函数是不是在 DOH 中引发错误?【英文标题】:How to check if function throw an error in DOH?如何检查函数是否在 DOH 中引发错误? 【发布时间】:2013-04-17 14:05:38 【问题描述】:

我正在尝试检查一个函数是否抛出错误,并做了这个:

 define([
     'doh/runner',
     'app/Obj'
 ], function(
     doh,    
     Obj 
 )
     doh.register('Test Obj exception', [
         function () 
             try           
                 new Obj(); // should throw error
              catch(e) 
                 doh.t(e, 'should give an error if no parameters given');               
             
         
 ]);

Obj.js 文件:

...
constructor: function (args)
  if (!args)  throw 'Error' 
  ...

...

但也许在 Doh 中有什么正确的方法可以解决这个问题?有人可以解释吗?谢谢

【问题讨论】:

我不确定是什么问题。您能告诉我们正在发生的事情以及您希望/期望发生的事情吗? 【参考方案1】:

你想要 doh.assertError()

例子:

doh.assertError(TypeError, this.field, "setValue",
    [
        CreatedOn: "March 10th, 2014"
    ],
    "setValue() on an invalid format should throw a TypeError");

【讨论】:

【参考方案2】:

This example test 表明 DOH 正确捕获并显示错误。

This gist 是测试,包含以下代码:

var Obj = function () 
    if (arguments.length < 1) 
        throw 'Error - There are ' + arguments.length + ' arguments';
    
;
define(["doh/runner"], function(doh)
    var tests = [
        function () 
            new Obj(); // wrong call
        
    ];
    doh.register('Test Obj exception', tests);
);

屏幕截图显示了 1 个错误,以及来自Error 抛出的错误消息:

【讨论】:

我认为 OP 更多地指的是如何让 DOH 认识到错误正在被正确抛出(因此通过了测试)。这可能吗?感谢您在这里的帮助! 澄清——对代码中正确抛出的错误的通过测试

以上是关于如何检查函数是不是在 DOH 中引发错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 函数中引发错误

如何创建一个函数以在 openerp 中引发错误

Mongoose:自动添加时间戳引发错误 $__isSelected 不是函数

使用用户定义函数 (VBA) 引发错误

如何检查传递给函数的参数数量是不是错误

如何在 Django 中引发 410 错误