运行Typescript使用Chutzpah对Typescript源文件进行QUnit测试

时间:2016-05-12 10:09:30

标签: visual-studio typescript qunit chutzpah

我正在尝试使用Typescript源文件的单元测试创​​建一个Typescript文件。我的项目结构:

/js/my-unit.ts
/js-tests/my-unit.tests.ts
/Scripts/typings/qunit/qunit.d.ts
/chutzpah.json

这是my-unit.ts内容:

function globalFunc() { return { dummy: "object" }; }

这是my-unit.tests.ts内容:

/// <reference path="../scripts/typings/qunit/qunit.d.ts" />
/// <reference path="../js/my-unit.ts" />
QUnit.test("Test 1", assert => assert.ok(!!globalFunc()));

这是chutzpah.json文件:

{
    "Compile": {
        "Mode": "External",
        "Extensions": [ ".ts" ],
        "ExtensionsWithNoOutput": [ ".d.ts" ]
    },
    "Tests": [
        { "Includes": [ "**/*-tests/**.ts" ] }
    ]
}

测试是红色的,因为:

  

无法找到变量:globalFunc

为什么!? 我该如何解决?

我尝试了什么:

  • 引用我的测试文件中的.js文件,但不允许这样做
  • 寻找欺骗,主要找this question,但一个答案没有用,另一个(由Chutzpah的作者,不少)似乎与我自己的设置类似
  • 重新阅读the "Running Unit Tests with Typescript" documenation
  • reference更改为源到路径(使用和不使用斜杠结尾),但这会在Visual Studio中出现错误
  • 在单元文件和class Foo {}测试中添加assert.ok(!!new Foo()),但这也失败了
  • 在单元文件和module My { export class Foo { } }测试中添加assert.ok(!!new My.Foo()),但这也失败了
  • 使用其他Chutzpah扩展程序中的“在浏览器中打开”功能,并检查测试文件的源代码(可能也是从测试资源管理器运行时为测试生成的),在那里我看到的确是我的源文件(my-unit.tsmy-unit.js引用:

      
      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8" />
          <title>QUnit Tests</title>
          <link rel="stylesheet" type="text/css" href="file:///E:/path/to/TestFiles/QUnit/qunit.css"/>
          <script type="text/javascript" src="file:///E:/path/to/TestFiles/QUnit/qunit.js"></script>
          <script type="text/javascript" src="file:///E:/path/to/project/js-tests/my-unit.tests.js"></script>
          <script>
              var amdTestPaths = [];
              // code ommitted for brevity...
          </script>
      </head>
      <body>    
          <div id="qunit"></div>
          <div id="qunit-fixture"></div>
      </body>
      </html>
    
  • 添加

    "References": [{ "Path":  "js", "Includes": [ "**.ts" ], "Excludes": [ "**.d.ts" ] }
    

    到我的chutzpah.json文件。这样的工作,但是是一个相当暴力的黑客,因为现在所有我的源文件将包含在每个测试夹具...

    < / LI>

以上是(实际上)我的实际场景的最小重复。我怎样才能让它发挥作用?

0 个答案:

没有答案