我正在使用带有React-Test-Library的jest来测试一个具有自定义prop-types验证器的组件。验证器如下所示:
aspectRatio: (props, propName, componentName) => {
const value = props[propName];
const cleaned = value
.trim()
.replace(/[^0-9:]+/g, ''); // Replace everything but numbers and forward slash.
// Ensure value is “number/number”.
const isCorrectFormat = /^\d+:\d+$/.test(cleaned);
if (!isCorrectFormat) {
return new Error(`Invalid value format “${value}” supplied to “${propName}” prop in “${componentName}” component. Expected something like “3:2”.`);
}
},
我的测试看起来是这样的:
test('throws error when incorrect aspect ratio format passed', () => {
expect(() => {
render(
<Picture
alt="Hello, picture."
aspectRatio="1-1/8"
src="test/books.jpg"
/>,
);
}).toThrowError();
});
当呈现错误的aspectratio
时,验证器按预期工作。我在控制台中得到以下错误:
Warning: Failed prop type: Invalid value format “1-1/8” supplied to “aspectRatio” prop in “Picture” component. Expected something like “3:2”.
但在运行上述测试时,我在终端中得到这样的消息:
● throws error when incorrect aspect ratio format passed
expect(received).toThrowError()
Received function did not throw
81 | />,
82 | );
> 83 | }).toThrowError();
| ^
84 | spy.mockRestore();
85 | });
86 |
我错过了什么?
由于propType验证器实际上并不throw
,所以我能够通过测试console.warn
内容来解决问题。
js prettyprint-override">test('throws error when incorrect aspect ratio format passed', () => {
console.error = jest.fn();
render(
<Picture
alt="Hello, picture."
aspectRatio="1-1/8"
src="test/books.jpg"
/>,
);
expect(console.error.mock.calls[0][2]).toBe('Invalid value format “1-1/8” supplied to “aspectRatio” prop in “Picture” component. Expected something like “3:2”.');
});
问题内容: 此自定义验证指令是官方角度网站上提供的示例。 http://docs.angularjs.org/guide/forms会 检查文本输入是否为数字格式。 为了对该代码进行单元测试,我编写了以下代码: 然后我得到这个错误: 我到处都放置了print语句以查看发生了什么,而且该指令似乎从未被调用过。测试像这样的简单指令的正确方法是什么? 问题答案: 另一个答案的测试应写为: 请注意,now
我正在尝试编写一个自定义bean验证器,并根据用户界面上的语言环境显示验证消息。 为此,我创建了一个验证器,如下所示: 我还注册了messageSource和validator bean: 在我的控制器中,我使用initBinder注册我的验证器: 不过,验证错误消息在用户界面上显示为{myproject.myclass.validation.name}。即使我设置了LocalValidatorF
我试图用Hibernate Validation 6.0.1定义约束定义,其中验证器位于相对于约束注释的不同位置(.jar/项目)。Aka,我有我想要验证的对象,它们位于带有注释定义的项目“api”中,但我将在项目“modules/common”中有验证器 我遵循文档中的描述。 配置文件 约束注释 验证器 我的问题我的问题是,如果我没有将“@约束(validatedby={})”放在注释中,我会得
主要内容:自定义验证器类实例我们可以在JSF中创建自己的自定义验证器。以下列表是在JSF中创建自定义验证器的步骤。 通过实现接口创建一个验证器类。 实现上面接口的方法。 使用注释为自定义验证器分配唯一的ID。 自定义验证器类实例 打开 NetBeans IDE 创建一个Web工程:CustomValidator,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文件:result
我正努力在我的Android应用程序中实现一个自定义验证器。我想在列表视图中显示一些从服务器检索到的建议(它可以正常工作),即使在我的AutoCompleteTextView中不以相同的字母开头。 所以,也就是说,如果我写“n”,我希望得到服务器响应,它是“r”。因此,我尝试实现一个验证器,设置示例,该示例控制服务器响应是否为空。 建议?提前致谢
我们可以在JSF中创建自己的Custom验证器。 在JSF中定义自定义验证器分为三个步骤。 步 描述 1 通过实现javax.faces.validator .Validator接口创建验证器类。 2 实现上述接口的validate()方法。 3 使用注释@FacesValidator为自定义验证程序分配唯一ID。 步骤1:创建Validator类:UrlValidator.java public