14

在过去的两个小时里,我一直在尝试让 Karma runner 提供一个 svg 文件和一个 html 固定装置,但到目前为止还没有运气。

在此线程上的第二个答案之后:将 html 与 testacularjs 集成时出错我一直在尝试使用served来指示我的固定装置和 svg 文件应该由服务器分发,但我仍然收到“未找到”

files = [
  JASMINE,
  JASMINE_ADAPTER,
  REQUIRE,
  REQUIRE_ADAPTER,

  // put all components in requirejs 'paths' config here (included: false)
  { pattern: 'preview/public/components/**/*.js', included: false },
  { pattern: 'preview/public/js/**/*.js', included: false },

  // assets
  { pattern: 'preview/public/img/svg/*.svg', included: false, served: true },

  // helpers & fixtures for jasmine-jquery
  { pattern: 'test/libs/**/*.js', included: true },
  { pattern: 'test/fixtures/**/*.html', included: false, served: true },

  // all src and test modules (included: false)
  { pattern: 'test/specs/**/*.spec.js', included: false },

  // test main require module last
  'test/test-main.js'
];

我正在设置jasmine.getFixtures().fixturesPathto /fixtures,我可以看到它使用了正确的路径,但我仍然最终......

GET http://localhost:9876/img/svg/directional-pad-gradients.svg 404 (Not Found) GET http://localhost:9876/fixtures/directional-pad.html 404 (Not Found)

如果有人有使用 Karma runner 加载固定装置和/或 svg 的示例,我真的很想看看。谢谢!

4

2 回答 2

26

在这里回答我自己的问题......

我试图在http://localhost:9876/fixtures/directional-pad.html

相反,我应该尝试在http://localhost:9876/base/test/fixtures/directional-pad.html

Karma 将所有内容存储在base/路由下,因此您添加的任何静态文件路由都需要从它开始。

于 2013-04-12T15:19:28.873 回答
4

一种方法是设置代理服务器。

使用代理服务器的测试系统的一个很好的例子是 https://github.com/yearofmoo-articles/AngularJS-Testing-Article

这是 Moo 的伟大测试教程中的示例。 http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-testacular.html

您在 karma 配置文件中设置代理

proxies = {
  '/': 'http://localhost:8100/'
};

然后你需要在8100上设置服务器

这可以使用 http-server 来完成

npm install http-server --save-dev

然后创建两个文件

./server.sh

nf --procfile ./config/Procfile.server start

./config/Procfile.server

web_server: ./node_modules/http-server/bin/http-server -p 8100 preview/public

然后你需要运行你的服务器

./server.sh

然后,当您运行测试时,代理将提供您的文件。

于 2013-04-11T16:40:45.880 回答