2016-10-04 139 views
0

我使用Angular 2 Karma-Jasmine。 我有AService,Angular2嘲讽注射服务

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

现在AServicegetA()方法,以及使用function1方法getA()。 我想模拟AService.getA方法?

请告诉我嘲笑的最佳方式AService

+0

你在测试使用依赖注入打字稿的结构类型系统的解释?请提供一个更大的例子。 – Supamiu

+0

我没有例子deat @ Supamiu,我想学习在angular2-jasmine-karma中嘲笑的最佳方式。 我的函数1是静态的,通过AServcie,没有注入。 – emanuel07

回答

1

如果function的签名是接受AService

function1(value, service: AService) {} 

,那么你需要确保模拟与AService兼容。如果AService只有一个方法getA,那么你真的只需要做

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

如果AService具有不仅仅是getA更多的方法,你不希望有实现这一点,那么你可以在“投”的模拟输入AService

let mock = <AService>{ same as above } 

或者如果function1参数的类型不能为AService,那么你可以真传任何它。

请参见:

+0

我的AService也有其他方法。在这种情况下该怎么办?请编辑该案例的答案。 – emanuel07

+0

查看我编辑的“cast”示例 –

+0

谢谢,这可能是嘲笑的最佳解决方案吗? – emanuel07