Javascript 如何使用QUnit和TypeScript加载公共函数

Javascript 如何使用QUnit和TypeScript加载公共函数,javascript,typescript,qunit,single-page-application,chutzpah,Javascript,Typescript,Qunit,Single Page Application,Chutzpah,我正在使用QUnit测试我的typescript代码,当我运行这样一个简单的示例时,一切都很好: 但当我尝试为我的SPA应用程序创建单元测试时,我的噩梦就开始了。 在对我的VS使用Chutzpah运行测试时,我遇到了一个奇怪的错误: “在mypath\home.tests.ts(第6行)中找不到变量home 我的代码如下: home.ts import logger = module('services/logger'); export var title = 'Home View'; exp

我正在使用QUnit测试我的typescript代码,当我运行这样一个简单的示例时,一切都很好:

但当我尝试为我的SPA应用程序创建单元测试时,我的噩梦就开始了。 在对我的VS使用Chutzpah运行测试时,我遇到了一个奇怪的错误: “在mypath\home.tests.ts(第6行)中找不到变量home

我的代码如下:

home.ts

import logger = module('services/logger');
export var title = 'Home View';

export function activate() {
    logger.log('Home View Activated', null, 'home', true);
    return true;
}
/// <reference path="../../Scripts/qunit.d.ts" />
QUnit.module("home.ts tests");
import home = module("home");

test("test title from home viewmodel", function () {

    // Calling to active public function from home viewmodel. (home.ts)   
    var activateResult:string = home.title;

    // Assert
    equal(activateResult, "Home View", "Result should be Home View ");

});
home.tests.ts

import logger = module('services/logger');
export var title = 'Home View';

export function activate() {
    logger.log('Home View Activated', null, 'home', true);
    return true;
}
/// <reference path="../../Scripts/qunit.d.ts" />
QUnit.module("home.ts tests");
import home = module("home");

test("test title from home viewmodel", function () {

    // Calling to active public function from home viewmodel. (home.ts)   
    var activateResult:string = home.title;

    // Assert
    equal(activateResult, "Home View", "Result should be Home View ");

});
//
质量模块(“home.ts测试”);
导入主页=模块(“主页”);
测试(“来自主视图模型的测试标题”,函数(){
//从home viewmodel调用活动的公共函数。(home.ts)
var activateResult:string=home.title;
//断言
相等(激活结果,“主视图”,“结果应为主视图”);
});
这是我的打字脚本设置:

知道我的代码有什么问题吗

更新1 Vs2012中输出窗口的完整消息为:

测试“home.ts测试:从home viewmodel测试激活功能”失败 在第1次测试中死亡file:///C:/Users/rolando/AppData/Local/Microsoft/VisualStudio/11.0/Extensions/kyo4ap1e.tvo/TestFiles/QUnit/qunit.js:412 在file:///D:/Mercatus/SourceCode/KILN/AquaVet2/SW/AquaVet.Web/App/viewmodels/_Chutzpah.7.home.tests.js:6: 找不到变量:home 在D:\Mercatus\SourceCode\kill\AquaVet2\SW\AquaVet.Web\App\viewmodels\home.tests.ts中(第6行)

0个通过,1个失败,总共1个(chutzpah)

更新2 正如您在代码中看到的,我正在尝试使用关键字模块(“home”)加载home.ts…我不确定这是否是我出现问题的原因。更好的解决方案是向home.ts添加一个内部引用


但是我不知道如何引用来激活函数!!。

仅仅添加导入语句并不包括AMD模块-您需要一个这样的加载程序来实现这一点

谷歌搜索一下就会发现这一点,这可能有助于让QUnit使用异步模块


关于将Chutzpah与Require一起使用,链接到。

仅添加导入语句不包括AMD模块-您需要这样的加载程序来实现这一点

谷歌搜索一下就会发现这一点,这可能有助于让QUnit使用异步模块


关于将Chutzpah与Require一起使用,链接到。

您的js控制台是否显示404s?我正在使用Chutzpah在Vs2012上运行测试。我的测试结果可在输出窗口中查看(请参阅问题更新中的日志)仅仅添加一个
import
语句并不包括AMD模块-你需要一个像require.js这样的加载程序来完成。我不确定QUnit是如何工作的-但是它能够加载
home
模块吗?没有它,你会得到你描述的错误。请注意,你提到的文章使用了类似
/我之所以使用import,是因为home.ts不是使用类生成的,以便使用:var myHome=new home();有什么方法可以使用这个“public”吗“使用//??@Rolando激活函数您必须创建自己的引导程序:或者您可以使用gruntjs:抱歉,没有太详细。这将取决于您的要求。您的js控制台是否显示404s?我正在使用Chutzpah在Vs2012上运行测试。我的测试结果可以在输出窗口中看到(请参阅问题更新中的日志),只需添加
import
语句不包括AMD模块-您需要一个加载程序,如require.js来完成这项工作。我不确定QUnit是如何工作的——但它是否能够加载
主页
模块?如果没有这一点,您将准确地得到您描述的错误。请注意,您所引用的文章使用了类似于
//
的引用。之所以使用导入,是因为home.ts不是使用类来生成的,而不是使用以下内容:var myHome=new home();有什么方法可以使用//??@Rolando使用这个“公共”激活功能吗?你必须创建自己的引导程序:或者你可以使用gruntjs:抱歉,没有太详细。这将取决于你的要求