Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何通过Jasmine中的类名获得Angular 2元素_Unit Testing_Angular_Jasmine - Fatal编程技术网

Unit testing 如何通过Jasmine中的类名获得Angular 2元素

Unit testing 如何通过Jasmine中的类名获得Angular 2元素,unit-testing,angular,jasmine,Unit Testing,Angular,Jasmine,我可以使用 fixture.debugElement.query(By.css('h1')); 但当我想通过类名获取元素时,我应该做什么呢。像这样的 fixture.debugElement.query(By.css('class="name"')) 您可以使用By.css传递css选择器。因此,任何可以与css一起使用的选择器,都可以与.css一起使用。类的选择器就是.classname(带句点) 这些只是一些例子。如果你知道css,那么你应该知道如何使用选择器 编辑: 要使用By.css

我可以使用

fixture.debugElement.query(By.css('h1'));
但当我想通过类名获取元素时,我应该做什么呢。像这样的

fixture.debugElement.query(By.css('class="name"'))

您可以使用
By.css
传递css选择器。因此,任何可以与css一起使用的选择器,都可以与.css一起使用。类的选择器就是
.classname
(带句点)

这些只是一些例子。如果你知道css,那么你应该知道如何使用选择器

编辑:
要使用
By.css()
请确保从“@angular/platform browser”导入{By}”

我更喜欢DOM元素上的用户id,然后在angular2单元测试中测试您 可以调用下面这样的函数来获取所需DOM元素的引用 你喜欢什么就测试什么

//typscript syntax

fixture = TestBed.createComponent(<your component>);

let result = fixture.nativeElement.querySelector('<id attribute name of html element>');

expect(result.id).toEqual("id  of your DOM element.").
//typscript语法
fixture=TestBed.createComponent();
让结果=fixture.nativeElement.querySelector(“”);
expect(result.id).toEqual(“DOM元素的id”)。

希望有此帮助。

只需添加一些其他有用的元素选择方法:

// get element with multiple classes

fixture.debugElement.query(By.css('.className1.className2'));


// get a certain element from a group of elements with the same class name

fixture.debugElement.queryAll(By.css('.className'))[1];

确保从@angular/platform browser导入By,而不是量角器

谢谢您的回答。如何检查css是否丢失。我试图检查链接是否已启用,css是否没有类“disabled”,这意味着链接已启用。那么如何测试一个类的缺席呢?在angular 5和jasmine上它对我不起作用,我失败了:By没有定义。有什么想法吗?很抱歉,我们需要按函数工作,从“@angular/platform browser”导入{By};是否可以将By.css()用于自定义选择器?例如By.css('my-own-input[name=“nameInput”]”),这是我在Angular 9中尝试的解决方案,它告诉我,
找不到名称“By”。
从“@Angular/platform browser”导入{By};这并不能回答这个问题。您可以,也可以参考页面右侧的相关和链接问题来找到答案。如果您有一个相关但不同的问题,并包含指向此问题的链接以帮助提供上下文。见:
// get element with multiple classes

fixture.debugElement.query(By.css('.className1.className2'));


// get a certain element from a group of elements with the same class name

fixture.debugElement.queryAll(By.css('.className'))[1];