【发布时间】:2017-06-07 15:12:25
【问题描述】:
我想测试 Angular 2 服务中的一个功能。
service.ts
upload(){
let file = new Transfer();
file.upload(myfile).then( // my callback );
}
我想在我的测试中使用jasmine 模拟Transfer。我在我的
sevice.spec.ts
import { TransferMock as Transfer } from '../mocks/mocks' 模拟它。但它不起作用。这就是我的测试实例化的方式。
describe('authentication service' , () => {
beforeEach(() => {
auth = new Service(<any>new HttpMock(), <any>new StorageMock())
});
it('initialize authentication',() => {
expect(auth).not.toEqual(null);
auth.upload('file'); //it fails here
});
})
编辑
Transfer 没有注入到服务中。 只有一个函数使用了Transfer。所以我猜不注入可以减少应用程序的初始加载时间(很高兴知道其他意见)。所以我想知道如果它是这样构造的,是否还有什么可以模拟的?
编辑
虽然我接受了 Martin 的回答,因为它是最佳实践,但是当您使用 ionic-native 插件时可能会出现一个问题。如果插件没有浏览器支持,它可能会失败。在这种情况下,当我注入它时发生了错误 FileTransfer is not defined 。所以我又回来了,寻找建议。
【问题讨论】:
标签: unit-testing angular ionic-framework jasmine