如何检查函数是否在DOH中抛出错误?

时间:2013-04-17 14:05:39

标签: dojo tdd doh

我试图检查函数是否抛出错误,然后执行此操作:

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

Obj.js文件:

...
constructor: function(args){
  if(args === undefined){ throw 'Error' }
  ...
}
...

但也许在Doh这个方法的正确方法在哪里?谁能解释一下?感谢

2 个答案:

答案 0 :(得分:1)

你想要doh.assertError()

示例:

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

答案 1 :(得分:0)

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抛出的错误信息:

enter image description here