Asp.Net 5和Aurelia Karma测试

pei*_*ent 7 karma-runner gulp-karma aurelia asp.net-core

我正在尝试在新的ASP.NET 5应用程序中为Aurelia设置骨架导航项目.我已经尝试了很多东西,并且相信我已经接近了,但我真的陷入了客户端测试.

我从GitHub上的Aurelia repo 下载了骨架项目并解压缩.

我利用斯科特·艾伦的建议设置JSPM设置放置JSPM包在wwwroot文件夹中陈述这篇文章.

然后我更新了项目结构,如下所示:

sln
|->wwwroot
 |->dist
 |->jspm_modules
 |->src
 |->styles
 |->test
 |->config.js
 |->index.html
 |->index.js
|->build
|->Controllers
|->doc
|->node_modules
|->aurelia.protractor.js
|->aureliafile.js
|->gulpfile.js
|->karma.conf.js
|->package.json
|->project.json
|->protractor.conf.js
|->Startup.cs
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

1. Aurelia骨架导航启动项目的测试文件夹应该在哪里生效?一方面,wwwroot很有意义,因为这是其他应用程序特定的javascript文件将存在的地方.另一方面,这些文件不应该被提供给客户端,因此将它们放在wwwroot中并没有多大意义.

2.一旦它们位于项目结构中的适当位置,需要更新哪些文件/值才能使测试正常运行?目前我将它们放在wwwroot目录中.我将karma.conf.js文件中的basePath更新为'wwwroot'.当我执行karma start命令虽然它给我一个404错误试图找到'/base/app-bundle.js'.该文件存在于'wwwroot/dist/app-bundle.js',但我无法弄清楚如何配置karma来找到它.

任何帮助将不胜感激.

rwi*_*h45 1

基于@PWKad 的答案:

您可能还需要修改传递给 Karma 的配置对象paths的属性,jspm以在每个路径前面添加前缀,base/以便 Karma 可以选取它们。

例如,我的src/App/wwwroot/config.js文件如下所示

paths: {
    "*": "app/*",
    "github:*": "jspm_packages/github/*",
    "npm:*": "jspm_packages/npm/*"
}
Run Code Online (Sandbox Code Playgroud)

我的karma.conf.js样子是这样的

basePath: '',
urlRoot: '/',
jspm: {
     config: 'src/app/wwwroot/config.js',
     packages: 'src/app/wwwroot/jspm_packages',
     loadFiles: 'tests/unit/**/*.js',
     serveFiles: 'src/app/wwwroot/app/**/*.js',
     paths: {
                "app/*": 'base/src/app/wwwroot/app/*',
                "test/*": 'base/test/*',
                "github:*": 'base/src/app/wwwroot/jspm_packages/github/*',
                "npm:*": 'base/src/app/wwwroot/jspm_packages/npm/*'
            }
}
Run Code Online (Sandbox Code Playgroud)

该项目针对这种情况设置了工作单元测试。它确实使用 Typescript,但概念是相同的。