Overview of the issue
你好,
我正试图在jhipster网关微服务中使用外部模板测试组件的html部分,如angular doc(https://angular.io/guide/testing#test-a-component-with-an-external-template)中所述 . 我已经像示例中一样生成了带有angular-cli的 Banner 组件,并设置了相同的测试 . 当我启动测试(纱线测试)时,我收到一个错误(参见下面的重现部分) .
我在一个空角项目中测试了相同的组件,它工作正常 .
我在jhipster生成的测试文件中看到模板被空的覆盖了,但我不明白为什么:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [MyAppTestModule],
declarations: [TrucComponent],
providers: [
TrucService
]
})
.overrideTemplate(TrucComponent, '') // If removed, get the same compile error
.compileComponents();
}));
我不明白我做错了什么,我该怎么办才能使它运作良好......
谢谢你的帮助 .
马雷克
Motivation for or Use Case
我们应该能够在官方文档中测试jHipster项目中的html组件部分作为角度推荐 .
Reproduce the error
-
创建 Banner 组件并使用此处的示例填充代码(https://embed.plnkr.co/?show=preview&show=app%2Fbanner.component.spec.ts)
-
在/ test / javascript / spec目录中创建测试文件,更改导入中的路径以正确加载组件
-
启动
yarn test
-
Shoud得到这种错误
20 12 2017 13:57:47.328:WARN [web-server]:404:/%3Ch1%3E%7B%7Btitle%7D%7D%3C / h1%3E 20 12 2017 13:57:47.352:WARN [web -server]:404:/%3Ch1%3E%7B%7Btitle%7D%7D%3C / h1%3E 20 12 2017 13:57:47.372:WARN [web-server]:404:/% 3Ch1%3E%7B %7Btitle%7D%7D%3C / h1%3E错误:'未处理承诺拒绝:','未能加载%3Ch1%3E%7B%7B Headers %7D%7D%3C / h1%3E',';区域:','ProxyZone',';任务:','Promise.then','; Value :','无法加载ERROR:'未处理的承诺拒绝:','无法加载%3Ch1%3E%7B%7B Headers %7D%7D%3C / h1%3E',';区域:','ProxyZone',';任务:','Promise.then',';值:','无法加载%3Ch1%3E%7B%7B Headers %7D%7D%3C / h1%3E',未定义PhantomJS 2.1.1(Linux 0.0.0):执行64 of 66 SUCCESS(0秒/1.547)错误:'未处理承诺拒绝:','未能加载%3Ch1%3E%7B%7B Headers %7D%7D%3C / h1%3E',';区域:','ProxyZone',';任务:','Promise.then',';值:','无法加载%3Ch1%3E%7B%7Btitle%7D%7D%3C / h1%3E',未定义PhantomJS 2.1.1(Linux 0.0.0)TestComponent应创建失败失败:未捕获(承诺) :无法加载%3Ch1%3E%7B%7Btitle%7D%7D%3C / h1%3E resolvePromise @ webpack:///node_modules/zone.js/dist/zone.js:784:0 < - spec / entry . ts:120708:78 resolvePromise @ webpack:///node_modules/zone.js/dist/zone.js:754:0 < - spec / entry.ts:120678:31 webpack:///node_modules/zone.js/dist /zone.js:831:0 < - spec / entry.ts:120755:31 invokeTask @ webpack:///node_modules/zone.js/dist/zone.js:424:0 < - spec / entry.ts:120348 :36 onInvokeTask @ webpack:///node_modules/zone.js/dist/proxy.js:103:0 < - spec / entry.ts:123417:49 invokeTask @ webpack:///node_modules/zone.js/dist/ zone.js:423:0 < - spec / entry.ts:120347:48 runTask @ webpack:///node_modules/zone.js/dist/zone.js:191:0 < - spec / entry.ts:120115: 57 drainMicroTaskQueue @ webpack:///node_modules/zone.js/dist/zone.js:595:0 < - spec / entry.ts:120519:42 run @ webpack:/// node_modules / core-js / modules / es6 .promise.js:87:0 < - spec / entry.ts:118081:29 webpack:///node_modules/core-js/modules/es6.promise.js:100:0 < - spec / entry.ts:118094:31 flush @ webpack:// /node_modules/core-js/modules/_microtask.js:18:0 < - spec / entry.ts:57932:11错误:此测试模块使用组件TestComponent,它使用“templateUrl”或“styleUrls”,但它们从未编译过 . 请在测试前调用“TestBed.compileComponents” . 在spec / entry.ts(第19172行)_initIfNeeded @ webpack:///node_modules/@angular/core/esm5/testing.js:979:0 < - spec / entry.ts:19172:87 createComponent @ webpack:// /node_modules/@angular/core/esm5/testing.js:1125:0 < - spec / entry.ts:19318:27 createComponent @ webpack:///node_modules/@angular/core/esm5/testing.js:832: 0 < - spec / entry.ts:19025:44 webpack:///src/test/javascript/spec/app/test/test.component.spec.ts:21:42 < - spec / entry.ts:115542: 52调用@ webpack:///node_modules/zone.js/dist/zone.js:391:0 < - spec / entry.ts:120315:31 onInvoke @ webpack:///node_modules/zone.js/dist/proxy .js:79:0 < - spec / entry.ts:123393:45 invoke @ webpack:///node_modules/zone.js/dist/zone.js:390:0 < - spec / entry.ts:120314:40 run @ webpack:///node_modules/zone.js/dist/zone.js:141:0 < - spec / entry.ts:120065:49 webpack:///node_modules/zone.js/dist/jasmine-patch . js:104:0 < - spec / entry.ts:123552:37 webpack:///node_modules/@angular/core/esm5/testing.js:51:0 < - spec / entry.ts:18244:30 webpack: ///node_modules/@angular/core/esm5/testing.js :102:0 < - spec / entry.ts:18295:29调用@ webpack:///node_modules/zone.js/dist/zone.js:391:0 < - spec / entry.ts:120315:31 onInvoke @ webpack:///node_modules/zone.js/dist/async- test.js:49:0 < - spec / entry.ts:122870:45 onInvoke @ webpack:///node_modules/zone.js/dist/proxy.js:76:0 < - spec / entry.ts:123390: 47调用@ webpack:///node_modules/zone.js/dist/zone.js:390:0 < - spec / entry.ts:120314:40运行@ webpack:///node_modules/zone.js/dist/zone .js:141:0 < - spec / entry.ts:120065:49 webpack:///node_modules/@angular/core/esm5/testing.js:97:0 < - spec / entry.ts:18290:28 onHandleError @webpack:///node_modules/zone.js/dist/async-test.js:59:0 < - spec / entry.ts:122880:31 onHandleError @ webpack:///node_modules/zone.js/dist/proxy .js:84:0 < - spec / entry.ts:123398:52 handleError @ webpack:///node_modules/zone.js/dist/zone.js:395:0 < - spec / entry.ts:120319:50 runGuarded @ webpack:///node_modules/zone.js/dist/zone.js:157:0 < - spec / entry.ts:120081:55 _loop_1 @ webpack:///node_modules/zone.js/dist/zone . js:666:0 < - spec / entry.ts:120590:57 microtaskDrainDone @ webpack:/// node_modules / zone.js / dist / zone.js:675:0 < - spec / entry.ts:120599:24 drainMicroTaskQueue @ webpack:///node_modules/zone.js/dist/zone.js:603:0 < - spec / entry.ts:120527:36运行@ webpack:///node_modules/core-js/modules/es6.promise.js:87:0 < - spec / entry.ts:118081:29 webpack:/// node_modules /core-js/modules/es6.promise.js:100:0 < - spec / entry.ts:118094:31 flush @ webpack:///node_modules/core-js/modules/_microtask.js:18:0 < - spec / entry.ts:57932:11预期未定义为真实 . webpack:///src/test/javascript/spec/app/test/test.component.spec.ts:31:36 < - spec / entry.ts:115550:37调用@ webpack:/// node_modules / zone . js / dist / zone.js:391:0 < - spec / entry.ts:120315:31 onInvoke @ webpack:///node_modules/zone.js/dist/proxy.js:79:0 < - spec / entry . ts:123393:45调用@ webpack:///node_modules/zone.js/dist/zone.js:390:0 < - spec / entry.ts:120314:40运行@ webpack:///node_modules/zone.js /dist/zone.js:141:0 < - spec / entry.ts:120065:49 webpack:///node_modules/zone.js/dist/jasmine-patch.js:104:0 < - spec / entry.ts :123552:37 webpack:///node_modules/@angular/core/esm5/testing.js:51:0 < - spec / entry.ts:18244:30 webpack:/// node_modules / @ angular / core / esm5 / testing.js:102:0 < - spec / entry.ts:18295:29 invoke @ webpack:///node_modules/zone.js/dist/zone.js:391:0 < - spec / entry.ts:120315: 31 onInvoke @ webpack:///node_modules/zone.js/dist/async-test.js:49:0 < - spec / entry.ts:122870:45 onInvoke @ webpack:///node_modules/zone.js/dist /proxy.js:76:0 < - spec / entry.ts:123390:47调用@ webpack:///node_modules/zone.js /dist/zone.js:390:0 < - spec / entry.ts:120314:40 run @ webpack:///node_modules/zone.js/dist/zone.js:141:0 < - spec / entry.ts :120065:49 webpack:///node_modules/@angular/core/esm5/testing.js:97:0 < - spec / entry.ts:18290:28 onHandleError @ webpack:///node_modules/zone.js/dist /async-test.js:59:0 < - spec / entry.ts:122880:31 onHandleError @ webpack:///node_modules/zone.js/dist/proxy.js:84:0 < - spec / entry.ts :123398:52 handleError @ webpack:///node_modules/zone.js/dist/zone.js:395:0 < - spec / entry.ts:120319:50 runGuarded @ webpack:///node_modules/zone.js/ dist / zone.js:157:0 < - spec / entry.ts:120081:55 _loop_1 @ webpack:///node_modules/zone.js/dist/zone.js:666:0 < - spec / entry.ts: 120590:57 microtaskDrainDone @ webpack:///node_modules/zone.js/dist/zone.js:675:0 < - spec / entry.ts:120599:24 drainMicroTaskQueue @ webpack:///node_modules/zone.js/dist /zone.js:603:0 < - spec / entry.ts:120527:36运行@ webpack:///node_modules/core-js/modules/es6.promise.js:87:0 < - spec / entry.ts :118081:29 webpack:///node_modules/core-js/modules/es6.pr omise.js:100:0 < - spec / entry.ts:118094:31
JHipster Version(s)
jHipster v4.13.0(但与jHipster v4.11有同样的问题)
JHipster configuration
Jhipster信息
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
git version 2.7.4
node: v6.11.3
npm: 3.10.10
yeoman: 2.0.0
yarn: 1.3.2
Docker version 17.11.0-ce, build 1caf76c
docker-compose version 1.17.0, build ac53b73
.yo-rc.json
{
"generator-jhipster": {
"promptValues": {
"packageName": "com.mycompany.myapp",
"nativeLanguage": "fr"
,
"jhipsterVersion": "4.13.0",
"baseName": "myApp",
"packageName": "com.mycompany.myapp",
"packageFolder": "com/mycompany/myapp",
"serverPort": "8080",
"authenticationType": "jwt",
"hibernateCache": "hazelcast",
"clusteredHttpSession": false,
"websocket": false,
"databaseType": "sql",
"devDatabaseType": "h2Disk",
"prodDatabaseType": "mysql",
"searchEngine": false,
"messageBroker": false,
"serviceDiscoveryType": "eureka",
"buildTool": "maven",
"enableSocialSignIn": false,
"enableSwaggerCodegen": false,
"jwtSecretKey": "eba2f264cf18b922d9e32b63d8ed8aecb16794e1",
"clientFramework": "angularX",
"useSass": true,
"clientPackageManager": "yarn",
"applicationType": "gateway",
"testFrameworks": [],
"jhiPrefix": "jhi",
"enableTranslation": true,
"nativeLanguage": "fr",
"languages": [
"fr",
"en"
]
}
}
Entity configuration(s) entityName.json files generated in the .jhipster directory
没有使用jhipster实体生成的实体
Browsers and Operating System
操作系统:ubuntu 16.04
我已经使用PhantomJS和Chrome进行了测试,结果相同 .
1 回答
我终于发现了问题:在webpack配置中,我在angular2-template-loader中删除了keepurl = true:
然后,在spec文件中,不要使用compileComponents函数(如下所示:https://angular.io/guide/webpack - 如果我正确理解......)
所以你只需要一个像这样的人:
不确定这是最好的解决方案,但对我有用!