英文:
Angular unit test case for this.document.body.setAttribute()
问题
你可以使用Jasmine和Karma来编写这行代码的单元测试。首先,你需要创建一个测试用例,然后在其中模拟组件和DOM环境,以便测试这行代码的行为。以下是一个示例测试用例的代码:
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MyComponent } from './my.component';
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ MyComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
});
it('should set data attribute to "data1" on ngOnInit', () => {
fixture.detectChanges();
expect(document.body.getAttribute('data')).toBe('data1');
});
});
在这个示例中,我们首先导入了必要的测试工具和组件。然后,在beforeEach
块中,我们创建了组件的测试实例。在it
块中,我们调用了fixture.detectChanges()
来触发组件的ngOnInit
生命周期钩子,并断言document.body.getAttribute('data')
的值是否为'data1'
。
你可以根据你的具体情况进行调整和扩展这个示例测试用例。记得在运行测试之前,确保你已经安装了Jasmine和Karma,并正确配置了测试环境。
英文:
document.body.setAttribute('data', 'data1')
inside ngOnInint()
in my component.
How can I write the unit test for this line?
答案1
得分: 0
你可以使用Jasmine和TestBed来创建一个单元测试,具体步骤如下:
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { YourComponent } from './your-component.component';
describe('YourComponent', () => {
let fixture: ComponentFixture<YourComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [YourComponent],
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(YourComponent);
});
it('should set data attribute on document body in ngOnInit', () => {
const spy = spyOn(document.body, 'setAttribute');
fixture.detectChanges();
expect(spy).toHaveBeenCalledWith('data', 'data1');
});
});
这段代码展示了如何使用Jasmine和TestBed创建一个单元测试。首先,我们导入了ComponentFixture
和TestBed
模块。然后,在describe
块中定义了测试套件的名称和测试逻辑。在beforeEach
块中,我们使用TestBed.configureTestingModule
方法配置了测试模块,并在compileComponents
方法中编译了组件。接下来,在第二个beforeEach
块中,我们使用TestBed.createComponent
方法创建了组件的实例。最后,在it
块中,我们编写了一个测试用例,验证在ngOnInit
方法中是否正确设置了data
属性。
希望对你有帮助!
英文:
You can create a unit test using Jasmine and TestBed in the following way:
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { YourComponent } from './your-component.component';
describe('YourComponent', () => {
let fixture: ComponentFixture<YourComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [YourComponent],
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(YourComponent);
});
it('should set data attribute on document body in ngOnInit', () => {
const spy = spyOn(document.body, 'setAttribute');
fixture.detectChanges();
expect(spy).toHaveBeenCalledWith('data', 'data1');
});
});
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论