2017-07-30 9 views
64

पर 'भेजें' मैं अपने कोणीय 4.1.0 घटक परीक्षण करने के लिए कोशिश कर रहा हूँ -कोणीय परीक्षण निष्पादित करने में विफल साथ नाकाम रहने 'XMLHttpRequest'

export class CellComponent implements OnInit { 
    lines: Observable<Array<ILine>>; 
    @Input() dep: string; 
    @Input() embedded: boolean; 
    @Input() dashboard: boolean; 
    constructor(
    public dataService: CellService, 
    private route: ActivatedRoute, 
    private router: Router, private store: Store<AppStore>) { 
    } 
} 

हालांकि, एक साधारण "बनाने चाहिए" परीक्षण इस छुपे त्रुटि फेंकता है। ..

NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'ng:///DynamicTestModule/module.ngfactory.js'.

तो मैं this सवाल है, जिससे पता चलता है कि इस मुद्दे को घटक है @Input)_ पैरामीटर जो सेट नहीं कर रहे हैं, हालांकि, अगर मैं तो जैसे अपने परीक्षण को संशोधित पाया:

it('should create', inject([CellComponent], (cmp: CellComponent) => { 
    cmp.dep = ''; 
    cmp.embedded = false; 
    cmp.dashboard = false; 
    expect(cmp).toBeTruthy(); 
    })); 

तब भी मुझे वही समस्या मिलती है, इसी तरह, यदि मैं घटक से @Input() एनोटेशन हटा देता हूं, फिर भी कोई फर्क नहीं पड़ता। मैं इन परीक्षणों को पास करने के लिए कैसे प्राप्त कर सकता हूं?

+1

घटक बनाने के लिए, आपको सभी निर्भरताओं को प्रदान करने की आवश्यकता है। क्या आप अपना पूरा परीक्षण सेटअप दिखा सकते हैं? मैं [plnkr] (http://plnkr.co/edit/mRT1WDo4tI8IRIaHHcyS) पर समस्या को पुन: पेश करने का प्रयास करूंगा –

+1

मेरे पास यह वही समस्या थी और आपने जो पोस्ट किया था उसे मिला। मैं एक समाधान खोजने में सक्षम था।मैंने दूसरे प्रश्न पर पोस्टिंग समाप्त कर दी लेकिन आप यहां एक नज़र डाल सकते हैं: https://stackoverflow.com/a/45419372/6739517 आशा है कि इससे मदद मिलती है! –

+0

इसे देखें: https://github.com/angular/angular-cli/issues/7296 – titusfx

उत्तर

2

यह क्रोम से वास्तविक परीक्षण त्रुटि छिपाने से संबंधित हो सकता है। परीक्षण क्षेत्र कुछ नकली http फैक्ट्री को भ्रमित कर देगा जो इसे लोड नहीं कर सकता है और इसलिए वह त्रुटि है जो इसकी रिपोर्ट करेगी। सबसे अधिक संभावना है कि त्रुटि ngOnInit क्षेत्र के आस-पास होगी जहां ऑब्जेक्ट कहता है, उप ऑब्जेक्ट की अपेक्षा करता है और उन्हें परिभाषित नहीं किया जाता है।

को परखने के लिए और त्रुटि की तह तक पहुंचने, PhantomJS अस्थायी रूप से जो इन initialisation त्रुटियों से कम पीड़ित रहा है करने के लिए स्विच और इस उम्मीद है कि आप के लिए वास्तविक त्रुटि रिपोर्ट करेंगे। कई मौकों पर मैंने पाया कि प्रारंभिकरण पर अपेक्षित वस्तु पूरी नहीं हुई थी। आईई:

fixture = TestBed.createComponent(MyComponent); 
    component = fixture.componentInstance; 

    component.object = {} 
// should be: 
    component.object = {"innerObjectThatIsNeeded" : []} 

वस्तु PhantomJS क्रोम पूरा करने के लिए है और यह भी अगले परीक्षण करने के लिए आगे बढ़ने के लिए अनुमति को ठीक।

इसके अलावा मुझे क्रोम से समस्या को हटाने का कोई समाधान नहीं देखा है। जैसा कि त्रुटि का पीछा करने के लिए नीति को "त्रुटि हटाएं, तब तक कोशिश करें" नीति को आजमाएं और अपनाने के लिए।

183

यह नई कोणीय क्ली की समस्या है। --sourcemaps=false के साथ अपना परीक्षण चलाएं और आपको सही त्रुटि संदेश मिलेंगे। यहाँ

विवरण

देखें: https://github.com/angular/angular-cli/issues/7296

संपादित करें: इस के लिए

आशुलिपि है:

ng test -sm=false

+7

आप पूर्ण नायक। जब तक मुझे यह नहीं मिला, तब तक मैं कोणीय इकाई परीक्षण त्रुटि संदेशों से जानकारी की कमी के साथ निराशा में दीवार के खिलाफ अपने सिर को टक्कर लगी थी। बहुत आभारी। –

+0

यह स्वीकार्य उत्तर होना चाहिए। – FelixM

1

मेरे लिए यह संदेश दिखाई देते हैं जब एक नकली मेरी परीक्षणों में falsy है: आम तौर पर आप अपने परीक्षण बूटस्ट्रैप में mockService प्रदान करते हैं। यदि आपका नकली अधूरा या गलत है, तो कोणीय इस बेवकूफ त्रुटि को वापस कर देता है।

मेरे मामले here

1

मेरे मामले में अधिक जानकारी अपराधी observable.timeout(x).retry(y) कहीं लौटे नमूदार पर सेवा वर्ग स्तर पर घटक है जो इस सेवा का उपयोग किया गया था में लागू किया गया था, उसके बाद फिर से।

सब कुछ कोणीय-क्ली 1.4 तक ब्राउज़र में सही ढंग से काम करता है। फिर कर्म परीक्षणों के दौरान असफल होना शुरू हुआ (इस तरह की मूर्खतापूर्ण त्रुटि के साथ)। समाधान इन टाइमआउट/पुनः प्रयास ऑपरेटरों को व्यवस्थित करने के लिए निश्चित रूप से था।

7

मेरे मामले के लिए वहाँ एक नकली डेटा समस्या थी और Array के मामले में, मैं नकली से string लौट रहा था।

someApi = fixture.debugElement.injector.get(SomeApi); 
spyOn(someApi, 'someMethod') 
    .and.returnValue(Observable.of('this is not a string but array')); 

The error message is really distracting and was not telling the actual error. Running ng test --source=false pointed the correct error and line, and helped me to fix it quickly.

कई बार यह होता है जब आप नकली डेटा अधूरा या गलत है।

2

जैसा ऊपर बताया गया है: https://stackoverflow.com/a/45570571/7085047 मेरी समस्या मेरे ngOnInit में थी। मैं एक नकली swagger- जेनरेट आरईएसटी नियंत्रक प्रॉक्सी बुला रहा था। यह अशक्त लौट रहा था, और मुझे लगता है कि अशक्त है, जो काम नहीं करता है की सदस्यता गया था ...

त्रुटि की वापसी हुई: https://github.com/NagRock/ts-mockito

:

Failed to load ng:///DynamicTestModule/MockNodeDashboardComponent_Host.ngfactory.js: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

मैं इस मुद्दे TS-mockito का उपयोग कर तय

मैं इस तरह एक नकली उदाहरण बनाने के लिए कोड कहा:

import { mock, instance, when } from 'ts-mockito'; 
import { Observable } from 'rxjs/Observable'; 
import { Observer } from 'rxjs/Observer'; 
import { MockScenario } from './vcmts-api-client/model/MockScenario'; 

const MockVcmtsnodemockresourceApi: VcmtsnodemockresourceApi = mock(VcmtsnodemockresourceApi); 
const obs = Observable.create((observer: Observer<MockScenario[]>) => { 
    observer.next(new Array<MockScenario>()); 
    observer.complete(); 
}); 
when(MockVcmtsnodemockresourceApi.getMockScenariosUsingGET()).thenReturn(obs); 
const instanceMockVcmtsnodemockresourceApi: VcmtsnodemockresourceApi = instance(MockVcmtsnodemockresourceApi); 

और फिर परीक्षण के प्रदाताओं सरणी lik के लिए उदाहरण के लिए जोड़ा ई यह:

beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     ... 
     providers: [ 
     ... 
     { provide: VcmtsnodemockresourceApi, useValue: instanceMockVcmtsnodemockresourceApi }, 
     ... 
     ]   
    }).compileComponents(); 
    })); 
+0

यदि आपके पास कोई नया प्रश्न है, तो कृपया [प्रश्न पूछें] (https://stackoverflow.com/questions/ask) बटन पर क्लिक करके इसे पूछें। इस प्रश्न का एक लिंक शामिल करें यदि यह संदर्भ प्रदान करने में मदद करता है। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/17805821) –

+0

ऐसा लगता था कि मेरा लक्षण ओपी जैसा ही था, इसलिए मैंने सोचा कि लोगों को मेरे लिए काम करने वाले फिक्स को उपयोगी लग सकता है ... –

1

मुझे यह त्रुटि भी मिली, जो सत्य कहा जाता है वह काफी गैर बात करने वाला है।

यह HTTP कॉल से संबंधित था मेरी सेवाओं गर्त

2 तरीकों

get(); 
getAll(); 

मैं इस सेवा मजाक कर रहा हूँ के साथ myService.ts का उपयोग करें: mockMyService.ts

त्रुटि यहाँ था क्योंकि मेरा घटक getAll() विधि का उपयोग कर रहा था जिसे मैं mockMyService में कार्यान्वित करना भूल गया था, इसलिए मैंने अभी विधि जोड़ा:

private mockObjects = [ 
{ 
    'id': '1', 
    'champ1': 'TECH', 
    'champ2': 2, 
    'champ3': 'Data bidon' 
}, 
{ 
    'id': '2', 
    'champ1': 'TECH', 
    'champ2': 2, 
    'champ3': 'Data au pif' 
}, 
{ 
    'id': '3', 
    'champ1': 'FUNC', 
    'champ2': 3, 
    'champ3': 'Data quelconque' 
}, 
]; 

getAll(): Observable<any> { 
    return Observable.of(this.mockObjects); 
} 

त्रुटि चला गया था :)

0

क्या मैं कर रहे होते है:

console.log() है, ngOnint (में लाइन के बाद लाइन जोड़े) और पता लगाने के लिए यह कितनी दूर चला जाता है, तो लाइन का निरीक्षण जो इसे पार नहीं करेगा।

पूर्व:

ngOnInit() { 
    this.route.paramMap 
     .switchMap(params => { 
      this.busy = true; 
      this.updateErrors(null); 

      console.log(params); 

      **const id = params.get('id');** 
      console.log(id); 

      if (id === 'new') { 
       this.editMode = true; 
       return Observable.of(GroupComponent.newGroup()); 
      } 
      return this.apiService.getGroup(id); 
     }) 
    } 

यह इस पोस्ट में एक ही त्रुटि के साथ अपने परीक्षण में नाकाम रहने पर था। जैसा कि ऊपर दिखाया गया है, मेरे पास दो console.logs थे। पहले एक थोरूग पास हो गया, लेकिन दूसरा नहीं। तो मुझे एहसास हुआ कि यह मुद्दा कॉन्स आईडी = params.get ('id') पर है; और मैंने इसे ठीक किया।

आशा है कि यह किसी की मदद करेगा।

संबंधित मुद्दे