Angular2 Jasmine测试图像源

时间:2016-11-30 15:28:05

标签: angular karma-jasmine gulp-karma

我有一个模板中有图像的组件

 <div class="logo"><img src="../images/logo.png"/></div>

当运行业力任务时,它会抛出这样的错误

Uncaught Error: Cannot find module "../images/logo.png"

要提到应用程序渲染图像正常,只有业力抱怨。

任何建议都将受到赞赏。

3 个答案:

答案 0 :(得分:6)

您可以尝试这样的事情:

it('should render the logo', async(() => {
  const fixture = TestBed.createComponent(AppComponent);
  fixture.detectChanges();
  const compiled = fixture.debugElement.nativeElement;
  expect(compiled.querySelector('div.logo>img').src).toContain('/images/logo.png');
}));

答案 1 :(得分:0)

让我们假设您正在使用karma-jasmine来运行测试。这些文件将托管在端口9876上。

假设您的img src为./assets/images/logo.png,那么您应该期望src为http://localhost:9876/assets/images/logo.png而不仅仅是./assets/images/logo.png

答案 2 :(得分:0)

您还可以使用karma.conf.js中的代理和文件属性来提供文件并对其进行代理。

在文件属性中添加要投放的文件

{ pattern: './src/assets/**', watched: false, included:false, served:true, nocache:false }

还可以使用不同的url /路径代理这些文件,更新代理属性

proxies: {
   '/assets/': '/base/src/assets/'
}

现在,当您尝试访问http://localhost:9876/assets/logo.png时,它将是对src/assets/logo.png的代理调用(所有的src资产也可以像http://localhost:9876/base/src/assets/logo.png这样访问)