【发布时间】:2016-01-12 20:22:43
【问题描述】:
我在文件 A 中定义了一个简单的类,如下所示:
var canSendTestEmail = (function(){
'use strict';
return{
sendTestEmail: _sendTestEmail()
}
function _sendTestEmail(){
//do something
return null;
}
})
文件 A 位于同一文件夹中,并且正在通过 Karma config 正确加载
我在一个非常简单的 Mocha 测试中使用这个类。测试如下:
describe('canSendTestEmail', function(){
'use strict';
describe('should send an email', function(){
expect(canSendTestEmail.sendTestEmail()).to.equal(null);
});
});
我正在使用 Karma 作为测试运行器来测试 Angular 应用程序。 Chai、Sinon 和所有常见的嫌疑人都已正确加载。
运行测试时,我收到以下错误:
TypeError: 'undefined' is not a function (evaluating 'canSendTestEmail.sendTestEmail()')
我已经尝试了各种方法来定义类 canSendTestEmail 并且无论我得到什么类型都找不到或者上面的错误。
我想我在这里遗漏了一些明显的东西。我来自 C++ 和 Java 背景,所以这可能是一个 javascript“东西”
怎么了?
我的问题已经得到解答!我稍后会发布我的更新代码。
【问题讨论】:
-
我忘了补充一点,我知道文件 A 正在正确加载到 Karma 中
-
canSendTestEmail.sendTestEmail未定义,您正在尝试将其作为函数运行... -
把我的代码改成了这个,现在得到一个错误,说 canSendTestEmail 找不到。
(function(){ 'use strict'; function canSendTestEmail (){ } canSendTestEmail.prototype.sendTestEmail = function(){return null;} })() -
canSendTestEmail是一个函数,一个未解析的函数,这是,您定义了它,但没有运行它(认为是指向 C++ 函数的指针)。然后您尝试获取它的属性,这在 javascript 中非常好......因为这是有效的:(function () {}).sendTestEmail,其中返回undefined。然后你尝试执行 undefined,然后你得到你的错误。 -
我想我正在为为什么它没有得到解决而苦苦挣扎,因为我在过去几个月中多次用 Javascript 编写过这样的代码并且从未见过这种情况。您将如何实现该功能?
标签: angularjs mocha.js karma-runner