首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在angular2中使用ts-mockito模拟getter

在angular2中使用ts-mockito模拟getter
EN

Stack Overflow用户
提问于 2017-09-08 13:59:09
回答 1查看 2K关注 0票数 4

我有一项服务

代码语言:javascript
复制
@Injectable()
export class MyService {
    private _id: string;
    get id(): string {
        return this._id;
    }
}

以及一个组件的测试,我想在其中模拟这个服务:

代码语言:javascript
复制
let myServiceMock = mock<MyService>(MyService);
when(myServiceMock.id).thenReturn('mockId');

TestBed.configureTestingModule({
    imports: [
        MyModule
    ],
    providers: [
        {
            provide: MyService, useValue: instance(myServiceMock)
        }

    ]
});

当测试运行时,我将undefined作为一个id

可以通过mockito来模拟getter吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-08 13:59:09

看起来这就是TestBed.configureTestingModule的工作方式。它重新定义了作为useValue提供的所有依赖项。

解决方案是使用useFactory

代码语言:javascript
复制
let myServiceMock = mock<myServiceMock>(MyService);
when(myServiceMock.id).thenReturn('mockId');

TestBed.configureTestingModule({
    imports: [
        MyModule
    ],
    providers: [
        {
            provide: MyService, useFactory: () => instance(myServiceMock)
        }

    ]
});

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46118254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档