Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Karma-我可以使用脚本标记而不是Karma.config.files吗?_Javascript_Tdd_Karma Runner_Karma Jasmine - Fatal编程技术网

Javascript Karma-我可以使用脚本标记而不是Karma.config.files吗?

Javascript Karma-我可以使用脚本标记而不是Karma.config.files吗?,javascript,tdd,karma-runner,karma-jasmine,Javascript,Tdd,Karma Runner,Karma Jasmine,Karma提供了一个名为customContextFile的配置选项,允许用户指定Karma将提供的HTML文件 我的问题是-我可以直接将标记添加到自定义上下文文件中吗?或者我必须使用karma配置中的文件属性在浏览器中加载文件吗? 更多信息 我想把脚本标记直接放在我的customContextFile上,使它看起来类似于index.html,列出了所有供应商文件,等等 然而,karma在清单404中列出了我添加到自定义上下文文件中的脚本标记。我怀疑这是因为我没有在karma配置的files属

Karma提供了一个名为
customContextFile
的配置选项,允许用户指定Karma将提供的HTML文件

我的问题是-我可以直接将
标记添加到自定义上下文文件中吗?或者我必须使用karma配置中的
文件
属性在浏览器中加载文件吗?

更多信息 我想把脚本标记直接放在我的customContextFile上,使它看起来类似于index.html,列出了所有供应商文件,等等

然而,karma在清单404中列出了我添加到自定义上下文文件中的脚本标记。我怀疑这是因为我没有在karma配置的files属性中列出这些文件。或者我的路径在脚本标记中是错误的

目录结构

.
|--app
|   |--mock
|   |   |--*.json
|   |--scripts
|   |   |--*.ts
|   |--vendor
|   |   |--*.js
|
|--config
|   |--karma.conf.js
|
|--dist
|   |--mock
|   |   |--*.json
|   |--scripts
|   |   |--*.js
|   |--tests
|   |   |--*.js
|   |--vendor
|   |   |--*.js
|   |--specRunner.html
|
config/karma.conf.js

config.set({
    basePath: '../dist',
    frameworks: ['jasmine'],
    reporters: ['dots'],
    port: 9876,
    colors: false,
    logLevel: config.LOG_DEBUG,
    browserNoActivityTimeout: 100000,
    plugins: [
        'karma-chrome-launcher',
        'karma-jasmine'
    ],

    customContextFile: 'specRunner.html',

    files: [
        {pattern: 'vendor/**/*.js', included: false, watched: false},
        {pattern: 'mock/**/*.json', included: false, watched: false},
        {pattern: 'scripts/**/*.js', included: false},
        {pattern: 'tests/**/*.js', included: false}
    ]
    ...
dist/specRunner.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Spec Runner</title>
</head>
<body>

<h1>Thank you for reading this far</h1>

<h2>Karma 404s with each of these</h2>
<script src="jQuery/jquery-1.7.min.js"></script>
<script src="vendor/jQuery/jquery-1.7.min.js"></script>
<script src="dist/vendor/jQuery/jquery-1.7.min.js"></script>

...etc...

<script src="scripts/app.js"></script>
<script src="scripts/x.module.js"></script>
<script src="scripts/y.module.js"></script>
<script src="scripts/z.module.js"></script>

...etc...  

</body>
</html>

规格跑步者
谢谢你读到这里
业力404与每一个都有联系
等
等

Karma配置中的
文件
选项执行多个作业。它的工作之一是告诉Karma要创建的
脚本
元素。然而,它的另一项工作是告诉业力该服务什么剧本。您不能只是手动将
script
元素放入HTML并调用它。您需要配置Karma,以便提供文件,因为如果文件未列出,Karma将不会提供文件

您可以在配置中使用类似的模式,告知Karma为文件提供服务,但不将其作为页面上的
脚本
元素包含(
包含:false
):

files: [
  { pattern: "vendor/**/*.js", included: false },
  { pattern: "scripts/**/*.js", included: false },
  // ...
]
也可以在浏览器端的
/base
下提供所有服务。因此,文件
scripts/app.js
将作为
/base/scripts/app.js
使用,后一个路径是您必须在
script
中使用的路径,或者在您引用该文件时使用的路径


如果您对Karma看到的是什么以及它是如何服务于它感到困惑,您可以在浏览器中进入调试模式并检查变量
\uuuuuuu Karma\uuuu.files
。这是Karma能够服务的文件名地图:键是文件名,每个键的值是文件内容的校验和。

包含:false,服务:true
有意义。谢谢但是您知道脚本标记的正确路径吗?Karma在HTML中找不到我请求的脚本。