【问题标题】: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 中有什么正确的方法可以解决这个问题?有人可以解释吗?谢谢

【问题讨论】:

  • 我不确定是什么问题。您能告诉我们正在发生的事情以及您希望/期望发生的事情吗?

标签: dojo tdd 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 认识到错误正在被正确抛出(因此通过了测试)。这可能吗?感谢您在这里的帮助!
    • 澄清——对代码中正确抛出的错误的通过测试
    猜你喜欢
    • 2018-09-28
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 2020-02-03
    • 2014-02-18
    • 2015-07-24
    • 2010-10-02
    相关资源
    最近更新 更多