首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular Spectator:更改模拟服务属性

Angular Spectator:更改模拟服务属性
EN

Stack Overflow用户
提问于 2020-11-04 00:06:21
回答 1查看 89关注 0票数 0

我正在使用旁观者和jest进行角度测试。我想在以下设置中更改模拟服务的属性:

代码语言:javascript
复制
describe('SearchComponent', () => {
  let spectator: Spectator<SearchComponent>;

  const createComponent = createComponentFactory({
    component: SearchComponent,
    providers: [
      mockProvider(SearchService, {
        isActive$: of(false),  // to be changed
      }),
    ],
    shallow: true,
  });

  beforeEach(() => {
    spectator = createComponent();
  });

  it('should display bar if isActive(true)', () => {

  });

  it('should display foo if isActive(false)', () => {

  });

});

如何更改isActive$的值?

EN

回答 1

Stack Overflow用户

发布于 2021-08-13 17:58:01

应该使用工厂和临时保存的提供者模拟...这样的东西对我很有效(对不起,没有测试这个版本):

代码语言:javascript
复制
class SearchServiceMock implements Partial<SearchService> {
    public isActive = of(false);
}

describe('SearchComponent', () => {
    let spectator: Spectator<SearchComponent>;
    let searchServiceMock: SearchServiceMock;

    const createComponent = createComponentFactory({
        component: SearchComponent,
        shallow: true,

        spectator = createComponent(
            providers: [
            {
                provide: SearchService,
                useFactory: () => {
                    searchServiceMock = new SearchServiceMock();
                    return searchServiceMock;
                }
      ],
        );
    });

    beforeEach(() => {
        spectator = createComponent();
    });

    it('should display bar if isActive(true)', () => {
        searchServiceMock.isAcrive = of(true);

        spectator = createComponent();

        // ... test here ...

    });

    it('should display foo if isActive(false)', () => {

    });

});

很抱歉回答得这么简短,不确定是否有人对此感兴趣。感觉真的很脏。

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

https://stackoverflow.com/questions/64666399

复制
相关文章

相似问题

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