gpt4 book ai didi

testing - 在 Angular 2 中加载外部 css 并进行测试

转载 作者:太空狗 更新时间:2023-10-29 17:36:07 25 4
gpt4 key购买 nike

我正在尝试创建一个带有测试的组件。该组件具有我要测试的外部 CSS。我认为我做的一切都是对的,但我没能通过考试。这是我的代码:app.component.spec.ts

import { AppComponent } from "./app.component";
import { async, TestBed } from "@angular/core/testing";
import { By } from "@angular/platform-browser";

describe("App Component", function () {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [AppComponent],
}).compileComponents()
}));
it("should instantiate component", () => {
let fixture = TestBed.createComponent(AppComponent);
expect(fixture.componentInstance instanceof AppComponent).toBe(true);
});
it("should have expected <h1> text", () => {
let fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();

let h1 = fixture.debugElement.query(By.css("h1"));

expect(h1.nativeElement.innerText).toBe("hello world!");

expect(h1.nativeElement.style.color).toBe("blue");
});
});

应用程序组件.ts:

import { Component } from "@angular/core";

@Component({
moduleId: module.id,
selector: "nebula-app",
styleUrls: ["./app.component.css"],
templateUrl: "./app.component.html",
})
export class AppComponent { }

应用程序组件.html:

<h1>hello world!</h1>

应用程序组件.css:

h1{
color: blue;
}

只有最后一个期望会失败。它将 h1.nativeElement.style.color 视为空。似乎它没有以某种方式加载 CSS。如果我将样式放在 html 中的线条样式中,则此测试将通过。但是将它作为外部 css 将无法达到预期。

我做错了什么?我认为 compileComponents 应该加载外部 CSS 并将其作为 nativeElement 的样式的假设是否错误?

最佳答案

h1.nativeElement.style 仅包含在元素上明确设置的样式。例如,以下元素将具有 backgroundColor 设置为 red

的样式对象
<h1 style="background-color: red;">hello world!</h1>

您可以使用 Protractor 端到端测试来测试颜色,而不是使用单元测试。在那里你可以编写这样的测试:

expect(element(by.css('h1')).getCssValue('color')).toEqual('rgba(0, 0, 255, 1)');

Protractor e2e 测试内置于 angular-cli 生成的 Angular2 项目中.您使用命令 ng e2e

运行它们

关于testing - 在 Angular 2 中加载外部 css 并进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40431919/

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