小编dev*_*tik的帖子

在大写字母或数字上分割字符串

我试图在打字稿中创建一个管道,该管道将拆分PascalCase字符串,但是如果这也可以拆分为数字,那将很好。我也希望将其分成连续的大写字母。我有这个管道,除了只在Chrome而不是Firefox中工作之外,它运作得很好,显然只有Chrome支持回溯。如何做到这一点而无需回头?

transform(value: string): string {
        let extracted = '';
        if (!value) {
            return extracted;
        }

        const regExSplit = value
            .split(new RegExp('(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?<=[0-9])(?=[A-Z][a-z])|(?<=[a-zA-Z])(?=[0-9])'));
        for (let i = 0; i < regExSplit.length; i++) {
            if (i !== regExSplit.length - 1) {
                extracted += `${regExSplit[i]} `;
            } else {
                extracted += regExSplit[i];
            }
        }

        return extracted;
    }
Run Code Online (Sandbox Code Playgroud)

因此,例如,字符串ANet15Amount应转换为A Net 15 Amount。上面的此正则表达式也会拆分camelCase字符串,但这不是必须考虑的。

javascript regex typescript

9
推荐指数
2
解决办法
149
查看次数

角茉莉花测试未触发ngOnInit内部订阅

我有一个基本的组件类,在ngOnInit内它订阅了服务调用

ngOnInit() {
    this.activityService.getActivities().subscribe(activities => {
        console.log('inside sub');
        this.recentActivities = activities;
    });
}
Run Code Online (Sandbox Code Playgroud)

因此,我包含了这个console.log,以查看此订阅是否曾经执行过。

在我的测试中,我监视此活动服务方法以返回我需要的数据的可观察集合。然后在测试中,我完成了整个fixture.detectChanges()处理,并期望我的数组长度为1。

fit('should populate recent activities', () => {
    const activities = [new ActivityBuilder()
        .withId('1').withRecentActivityActionId(RecentActivityActionType.Created).build()
    ];
    spyOn(activityService, 'getActivities').and.returnValue(of(activities));

    fixture.detectChanges();
    fixture.whenStable().then(() => {
        fixture.detectChanges();
    });
    fixture.detectChanges();

    expect(component.recentActivities.length).toBe(1);
});
Run Code Online (Sandbox Code Playgroud)

根据Angular文档,他们几乎做同样的事情,我什至尝试了fakeAsync方法,但无济于事。我在这里想念什么?为什么订阅块不执行?

unit-testing rxjs typescript karma-jasmine angular6

1
推荐指数
1
解决办法
1817
查看次数