- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Angular Testing 有疑问。我不知道这是一个错误还是我做错了什么。
我有 2 个组件。一种在 ngOnInit 中使用 promises,另一种是完全空的。
使用 promises 的组件如下所示:
import {Component, OnInit} from '@angular/core';
import {User, UserManager} from 'oidc-client';
@Component({
selector: 'app-test',
templateUrl: './test-promise.component.html',
styleUrls: ['./test-promise.component.css']
})
export class TestPromiseComponent implements OnInit {
private readonly userManager: UserManager;
public async ngOnInit(): Promise<any> {
return this.getDataStore('', '', '');
}
public getDataStore(url: string, key: string, keyType: string): Promise<any> {
return this.getToken();
}
public getToken(): Promise<string> {
return this.getUser().then(user => {
return user.access_token;
});
}
public getUser(): Promise<User> {
return this.userManager.getUser();
}
}
在导入语句中,您可以看到我有哪些依赖项以及我使用的是 Oidc 客户端。
我的其他组件看起来像这样(只是空的):
import { Component } from '@angular/core';
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.css']
})
export class TestComponent {
}
当您创建一个新组件时,两个组件的测试规范都遵循标准规范,因此对于使用 promises 的组件如下所示:
describe('TestPromiseComponent', () => {
let component: TestPromiseComponent;
let fixture: ComponentFixture<TestPromiseComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
TestPromiseComponent
]
}).compileComponents().then();
}));
beforeEach(() => {
fixture = TestBed.createComponent(TestPromiseComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
fit('should create', () => {
expect(component).toBeTruthy();
});
});
这是我的设置。现在非常奇怪的是,当我运行测试时,TestComponent 失败了——尽管实际上是 TestPromiseComponent 失败了。在这里查看结果:
那么现在有个大问题:为什么 TestComponent 失败了,即使实际上是 TestPromiseComponent 失败了?
谁能给我解释一下:)
编辑 1:
这是 TestComponent 的测试:
describe('TestComponent', () => {
let component: TestComponent;
let fixture: ComponentFixture<TestComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
TestComponent
]
}).compileComponents().then();
}));
beforeEach(() => {
fixture = TestBed.createComponent(TestComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
fit('should create', () => {
expect(component).toBeTruthy();
});
});
编辑 2:我正在运行这些版本的 karma 和 jasmine:
最佳答案
有 2 个 beforeEach(还有一个 async)很奇怪 我不知道 jasmine 将如何调用相同的(并行?是它们定义的顺序吗?顺便说一句,你错过了 await 关键字你的异步函数,所以你没有正确返回一个 promise ,这将导致测试的奇怪行为 :)
beforeEach 应该更像是:
beforeEach(() => {
return TestBed.configureTestingModule({
declarations: [
TestComponent
]
}).compileComponents().then( () => {
fixture = TestBed.createComponent(TestComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
}));
关于Angular 6 - 生命周期 Hook 中的 promise 使其他测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52475475/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!