gpt4 book ai didi

unit-testing - 为单元测试模拟 BsModalRef

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:10 24 4
gpt4 key购买 nike

我正在使用 BsModalRef 显示模式并使用 content 属性发送数据。所以我们有一些像这样的:

this.followerService.getFollowers(this.bsModalRef.content.channelId).subscribe((followers) => {
this.followerList = followers;
this.followerList.forEach((follower) => {
follower.avatarLink = this.setUserImage(follower.userId);
this.followerEmails.push(follower.email);
});
});

我们在 bsModalRef 的内容中设置 channelId (this.bsModalRef.content.channelId)。它工作正常。现在我正在为此编写单元测试。问题是我无法模拟它。我尝试过覆盖、监视等,但似乎没有任何效果。我正在使用此 link 中提到的方法.一种替代方法是使用 TestBed,但我不太了解它的用途。谁能帮我找到实现这一目标的方法?

最佳答案

我最近不得不做一些类似的事情,并且模拟方法调用有效。棘手的部分是在测试套件和组件中注入(inject) BsModalService。

describe('MyFollowerService', () => {
configureTestSuite(() => {
TestBed.configureTestingModule({
imports: [...],
declarations: [...],
providers: [...]
}).compileComponents();
});

// inject the service
beforeEach(() => {
bsModalService = getTestBed().get(BsModalService);
}


it('test', () => {
// Mock the method call
bsModalService.show = (): BsModalRef => {
return {hide: null, content: {channelId: 123}, setClass: null};
};

// Do the test that calls the modal

});
});

只要您按以下方式调用 bsModal,这种方法就可以工作

let bsModalRef = this.modalService.show(MyChannelModalComponent));

最后,这里有一些链接更深入地介绍了如何使用 TestBed 设置测试。

关于unit-testing - 为单元测试模拟 BsModalRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50249152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com