2016-01-14 6 views
5

मैं एंगुलर 2 बीटा संस्करण पर एक एप्लिकेशन का निर्माण कर रहा हूं और जब मैं अपना परीक्षण केस चला रहा हूं, तो मुझे यादृच्छिक रूप से त्रुटि मिलती है:परीक्षण - अंतःक्रियात्मक त्रुटि: 'असफल: चयनकर्ता "# root0" किसी भी तत्व से मेल नहीं खाता'

The selector "#root0" did not match any elements' error.

परीक्षण कोड:

@Component({ 
    template: '', 
    directives: [GroupBox, GroupBoxHeader] 
}) 
class TestComponent { 
} 

describe('group-box control',() => { 

    it('should show the title', injectAsync([TestComponentBuilder], (tcb) => { 
    return tcb.overrideTemplate(TestComponent, '<group-box><group-box-header>Title Content</group-box-header></group-box>') 
     .createAsync(TestComponent).then((fixture) => { 
     fixture.detectChanges(); 
     let compiled = fixture.debugElement.nativeElement; 
     expect(compiled).toContainText('Title Content'); 
    }); 
    })); 

    it('should show the body', injectAsync([TestComponentBuilder], (tcb) => { 
    return tcb.overrideTemplate(TestComponent, '<group-box><group-box-header>Title Content</group-box-header>Body Content</group-box>') 
     .createAsync(TestComponent).then((fixture) => { 
     fixture.detectChanges(); 
     let compiled = fixture.debugElement.nativeElement; 
     expect(compiled).toContainText('Body Content'); 
    }); 
    })); 
}); 

इम, जैस्मीन के साथ कर्मा का उपयोग कर https://github.com/juliemr/ng2-test-seed

निम्नलिखित भंडार के दिशा निर्देशों का पालन त्रुटि reproduces: +०१२३९५२४३२

StackTrace:

14 01 2016 11:40:32.073:INFO [karma]: Karma v0.13.19 server started at http://localhost:9876/ 14 01 2016 11:40:32.078:INFO [launcher]: Starting browser Chrome 14 01 2016 11:40:32.669:INFO [Chrome 47.0.2526 (Windows 8.1 0.0.0)]: Connected on socket /#9hKZqsNbKFPfYWzIAAAA with id 50428936 Chrome 47.0.2526 (Windows 8.1 0.0.0) group-box control should show the body FAILED Failed: The selector "#root0" did not match any elements Error: The selector "#root0" did not match any elements at new BaseException (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2.dev.js:8080:21) at DomRenderer_.createRootHostView (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2.dev.js:15248:15) at AppViewManager_.createRootHostView (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2.dev.js:11265:52) at C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2.dev.js:14531:46 at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:138:17) at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2544:30) at zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:111:19) at lib$es6$promise$$internal$$tryCatch (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1511:16) at lib$es6$promise$$internal$$invokeCallback (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1523:17) at lib$es6$promise$$internal$$publish (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1494:11) at C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:243:5 at microtask (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2557:15) at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:138:17) at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2544:30) at zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:111:19) at lib$es6$promise$asap$$flush (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1305:9) Failed: Cannot read property 'hostView' of undefined TypeError: Cannot read property 'hostView' of undefined at new ComponentFixture_ (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2047:97) at C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2145:16 at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:138:17) at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2544:30) at zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:111:19) at lib$es6$promise$$internal$$tryCatch (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1511:16) at lib$es6$promise$$internal$$invokeCallback (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1523:17) at lib$es6$promise$$internal$$publish (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1494:11) at C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:243:5 at microtask (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2557:15) at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:138:17) at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2544:30) at zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:111:19) at lib$es6$promise$asap$$flush (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1305:9) Failed: Cannot read property 'detectChanges' of undefined TypeError: Cannot read property 'detectChanges' of undefined at C:/Projectos/Fontes/Stratus-HTML/build/test/infrastructure/controls/group-box.test.js:52:20 at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:138:17) at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2544:30) at zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:111:19) at lib$es6$promise$$internal$$tryCatch (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1511:16) at lib$es6$promise$$internal$$invokeCallback (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1523:17) at lib$es6$promise$$internal$$publish (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1494:11) at C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:243:5 at microtask (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2557:15) at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:138:17) at Zone.run (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/testing.dev.js:2544:30) at zoneBoundFn (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:111:19) at lib$es6$promise$asap$$flush (C:/Projectos/Fontes/Stratus-HTML/build/assets/js/angular2-polyfills.js:1305:9) Chrome 47.0.2526 (Windows 8.1 0.0.0): Executed 59 of 60 (1 FAILED) (skipped 1) (0.519 secs/0.51 secs) [11:40:33] 'test' errored after 2.01 s [11:40:33] Error: 1 at formatError (C:\Users\LSANTOS\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:169:10) at Gulp. (C:\Users\LSANTOS\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:195:15) at emitOne (events.js:77:13) at Gulp.emit (events.js:169:7) at Gulp.Orchestrator._emitTaskDone (C:\Projectos\Fontes\Stratus-HTML\node_modules\orchestrator\index.js:264:8) at C:\Projectos\Fontes\Stratus-HTML\node_modules\orchestrator\index.js:275:23 at finish (C:\Projectos\Fontes\Stratus-HTML\node_modules\orchestrator\lib\runTask.js:21:8) at cb (C:\Projectos\Fontes\Stratus-HTML\node_modules\orchestrator\lib\runTask.js:29:3) at removeAllListeners (C:\Projectos\Fontes\Stratus-HTML\node_modules\karma\lib\server.js:333:7) at Server. (C:\Projectos\Fontes\Stratus-HTML\node_modules\karma\lib\server.js:344:9) at Server.g (events.js:260:16) at emitNone (events.js:72:20) at Server.emit (events.js:166:7) at emitCloseNT (net.js:1518:8) at doNTCallback1 (node.js:418:9) at process._tickCallback (node.js:340:17)

+0

मैं इसे आज़माउंगा। मैं टीएस का उपयोग नहीं कर रहा हूं, मैं ES6 + Traceur का उपयोग कर रहा हूं। मैंने एक रेपो बनाया है जहां आप आसानी से त्रुटि को पुन: उत्पन्न कर सकते हैं: https://github.com/cangosta/ng2_testing_controls – cangosta

+0

गनटर, मैंने एक सरलीकृत संस्करण – cangosta

+1

के साथ भंडार को अद्यतन किया है [testComponentBuilder के साथ एक बग है] (https://github.com/angular/angular/issues/5662) टेम्पलेट यूआरएल के साथ। इसके लिए अस्थायी फिक्स '.overrideTemplate (TestComponent, '

')' का उपयोग करना है जैसा कि आप कर रहे हैं। लेकिन, आप टेस्टकंपोनेंट को ओवरराइड कर रहे हैं और ग्रुपबॉक्स घटक नहीं हैं जिसमें 'templateUrl:'।/Group-box.html'' है ... मैं त्रुटि करता हूं जो त्रुटि उत्पन्न कर रहा है, लेकिन दुर्भाग्य से मुझे नहीं पता कि इसे कैसे ठीक किया जाए - मैंने केवल पृथक घटकों का परीक्षण किया ... – Sasxa

उत्तर

1

यह कोणीय 2.0.0-beta.3 में तय हो गई है

अधिक जानकारी के

Basically, what I had to do:

  • Manually add typings for jasmine with tsd install jasmine -so and add ///<reference... in the test files;
  • Add this in my imports:
import {setBaseTestProviders} from 'angular2/testing'; 

import { 
    TEST_BROWSER_PLATFORM_PROVIDERS, 
    TEST_BROWSER_APPLICATION_PROVIDERS 
} from 'angular2/platform/testing/browser'; 

Add this before my Component tests:

के लिए https://github.com/angular/angular/issues/6483#issuecomment-179557485 देखें
setBaseTestProviders(TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS); 
संबंधित मुद्दे