2017-04-20 18 views
6

के साथ निर्भरता इंजेक्ट करें मैं Http निर्भरता के साथ सेवाओं का परीक्षण कर रहा हूं। हर परीक्षण इस तरह दिखता है:कोणीय 2 सेवा परीक्षण: पहले

import { TestBed, async, inject } from '@angular/core/testing'; 
import { ValidationService } from './validation.service'; 
import { HttpModule, Http, Response, ResponseOptions, RequestOptions, Headers, XHRBackend } from '@angular/http'; 
import { MockBackend, MockConnection } from '@angular/http/testing'; 

describe('DashboardService',() => { 
    beforeEach(() => { 
    TestBed.configureTestingModule({ 
     imports: [HttpModule], 
     providers: [ 
     ValidationService, 
     { provide: XHRBackend, useClass: MockBackend } 
     ] 
    }); 
    }); 

    it('should ...', 
    inject([ValidationService, XHRBackend], 
     (service: ValidationService, mockBackEnd: MockBackend) => { 
     mockBackEnd.connections.subscribe((connection: MockConnection) => { 
      connection.mockRespond(new Response(new ResponseOptions({ 
      body: JSON.stringify('content') 
      }))); 
     }); 
     })); 
     // assertions ... 
}); 

आप देख सकते हैं, मैं हर उस पर बैकएंड नकली इंजेक्षन की जरूरत है।

क्या प्रत्येक टेस्ट से पहले निर्भरता इंजेक्ट करने के लिए beforeEach का उपयोग करना संभव है?

उत्तर

13

क्या प्रत्येक परीक्षण से पहले निर्भरता को इंजेक्ट करने के लिए पहले से उपयोग करना संभव है?

निश्चित रूप से आप कर सकते हैं।

let service; 

beforeEach(inject([Service], (svc) => { 
    service = svc; 
})) 

हालांकि आप भी सिर्फ TestBed से सेवा है, जो भी एक इंजेक्टर

let service; 

beforeEach(() => { 
    TestBed.configureTestingModule({ 
    ... 
    }) 

    service = TestBed.get(Service); 
}) 
+0

धन्यवाद है हो सकता है, मैं दोनों तरीकों से क्या मुझे सबसे अच्छा फिट बैठता है देखने के लिए कोशिश करेंगे। – trichetriche

+0

टेस्टबैड सेटअप का उपयोग किये बिना सेवा इंजेक्ट करने का कोई तरीका है? –

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