如何测试 html 输入类型的收音机是否被选中

How can I test if a html input type radio is checked

我的 component.html 中有这个 HTML:

<input type="radio" [checked]="selected" (change)="select()" />

我如何进行旁观者查询并期望测试此输入元素是否被选中?

我试过:

expect(spectator.query('input')).toHaveAttribute('checked');

但是我得到错误:

Error: Expected element to have attribute 'checked', but had 'undefined'

我试过:

expect(spectator.query('input')).toBeChecked();

但是我得到了错误:

Error: Expected element to be checked

如何测试这个简单的 HTML 输入元素?

谢谢
索伦

expect(spectator.query('input')).toBeChecked();是正确的用法。

看起来 selected 属性 是错误的,因为没有选择单选按钮,您会收到此错误。简单 修复您在测试中绑定 (通过将 selected 设置为 true)或 更新断言 以检查是否未选择单选按钮:

expect(spectator.query("input[type=radio]")).not.toBeChecked();

查看 this stackblitz 代码示例,其中我有 2 个绑定的单选按钮,一个被选中,另一个未被选中,我对其进行了测试。

it("should be checked", () => {
  spectator = createComponent();
  expect(spectator.query("#r1[type=radio]")).not.toBeChecked();
});

it("should not be checked", () => {
  spectator = createComponent();
  expect(spectator.query("#r2[type=radio]")).toBeChecked();
});

此外,请查看 this guide 以查看可用的自定义匹配器。