测试javascript函数时出现错误的错误类型

时间:2015-06-19 16:06:19

标签: javascript unit-testing

我正在尝试测试以下代码:

  /** ABSTRACT METHOD PLACEHOLDER */
MyResult.prototype.get = throwNotImplementedError;

function throwNotImplementedError(resultId) {
    throw new NotImplementedError('Please implement in Item Groups and Items. This call is abstract');
}

进行以下测试。

it('should have a placeholder for get', function(){
    expect(function(){return MyResult.get(123);}).toThrowError(NotImplementedError);
});

最终发生的事情是抛出TypeError而不是我的自定义NotImplementedError。类型错误的消息是:“MyResult.get不是函数”。

我想知道它是否可能与调用原型'get'中的变量有关,但我想我已经看过这样的例子,他们命名javascript类并使用他们调用get的自定义方法。它似乎适用于其他电话。

你对这次电话不起作用有什么建议吗?

2 个答案:

答案 0 :(得分:4)

错误完全正确。

您定义了MyResult.prototype.get,与MyResult.get无关。

您可能想要创建一个实例。

答案 1 :(得分:1)

这是原型功能

所以你必须用这样一个对象的实例来测试get函数:

it('should have a placeholder for get', function(){
    var resultObj = new MyResult(); // Create an instance of your object
    expect(function(){return resultObj.get(123);}).toThrowError(NotImplementedError);
});