2016-10-04 10 views
0

Я использую Angular 2 Karma-Jasmine. У меня есть AService,Angular2 mocking инъекционная услуга

it("test",() => { 
    let x:any = function1('value', aService); 
    expect(x).toEqual("value1"); 
}); 

Теперь AService имеет getA() метод и function1 используется getA() метод. Я хочу макет AService.getA способ ?.

Скажите, пожалуйста, лучшие способы насмешки AService?

+0

вы используете инъекции зависимостей в тесте? пожалуйста, дайте больший пример. – Supamiu

+0

Я не знаю, что делать, сумами, я хочу научиться лучшим способам насмешек в угловой2-жасминовой карме. Моя функция1 является статической, к которой проходит AServcie, нет инъекции. – emanuel07

ответ

1

Если подпись function «s должен принять AService Типу

function1(value, service: AService) {} 

, то вам необходимо убедиться, что макет совместим с AService. Если AService имеет только один метод getA, то вам действительно нужно сделать только

let mockA = { 
    getA:() => { 
    // mock implementation 
    } 
} 

Если AService имеет больше методов, чем просто getA, и вы не хотите, чтобы осуществить это, то вы можете «слепок» макет, чтобы ввести AService.

let mock = <AService>{ same as above } 

Или, если параметр function1 не классифицирован как AService, то вы можете действительно передать что-нибудь его.

Смотрите также:

  • This post который дает объяснение о системе структурного типа машинопись в
+0

У моего AService есть и другие методы. Как это сделать в этом случае? Пожалуйста, отредактируйте ответ для этого случая. – emanuel07

+0

Посмотрите пример «casting» Я отредактировал –

+0

Спасибо, наверное, это лучшее решение для насмешек? – emanuel07