Reactjs Jest/酶单元测试
我有以下需要测试的功能Reactjs Jest/酶单元测试,reactjs,unit-testing,mocking,jestjs,enzyme,Reactjs,Unit Testing,Mocking,Jestjs,Enzyme,我有以下需要测试的功能 export function buildOptions(options) { var oList=[]; for (var i=0; i < options.length; i++) { oList.push ( <option key={"optId"+i} value={options[i]["id"]}> {op
export function buildOptions(options) {
var oList=[];
for (var i=0; i < options.length; i++) {
oList.push (
<option key={"optId"+i} value={options[i]["id"]}>
{options[i]["name"]}
</option>
)
}
return oList;
}
收到:
"[{\"type\":\"option\",\"key\":\"optId1\",\"ref\":null,\"props\":{\"value\":1,\"children\":\"A\"},\"_owner\":null,\"_store\":{}},{\"type\":\"option\",\"key\":\"optId2\",\"ref\":null,\"props\":{\"value\":2,\"children\":\"B\"},\"_owner\":null,\"_store\":{}}]"
您的选项缺少
键
值,因此不匹配。也许可以试试这个:
it ('should return an array containing the populated options', () => {
const teams = [
{ "name": "A", "id": 1 },
{ "name": "B", "id": 2 }
];
const EXPECTED_OUTPUT = JSON.stringify([
<option key="optId1" value={1}>A</option>,
<option key="optId2" value={2}>B</option>
]);
expect(JSON.stringify(Helper.buildOptions(teams))).toMatch(EXPECTED_OUTPUT);
});
更多关于Jest测试的文档-expect:从查看您的数据来看,似乎错误实际上在您的预期中。在函数中分配键optId1时,您希望键为null,因此存在不匹配。您的“预期”值可能还应该包含与实际值匹配的键。对于更一般的情况,如果要检查输出是否包含任何特定元素,如何修改测试?例如,在本例中,是否需要检查该选项是否存在并检查其长度?
it ('should return an array containing the populated options', () => {
const teams = [
{ "name": "A", "id": 1 },
{ "name": "B", "id": 2 }
];
const EXPECTED_OUTPUT = JSON.stringify([
<option key="optId1" value={1}>A</option>,
<option key="optId2" value={2}>B</option>
]);
expect(JSON.stringify(Helper.buildOptions(teams))).toMatch(EXPECTED_OUTPUT);
});
it('should return an array containing the populated options', () => {
const teams = [
{ "name": "A", "id": 1 },
{ "name": "B", "id": 2 }
];
const result = Helper.buildOptions(teams);
// Check if option exist and have length of 2
expect(result).toBeTruthy();
expect(result).toHaveLength(2);
// Check if the options is as expected
expect(result[0]).toEqual(<option key="optId1" value={1}>A</option>);
expect(result[1]).toEqual(<option key="optId2" value={2}>B</option>);
});