javascript - 在 React 中测试简单的函数
问题描述
我正在构建一个简单的 React 应用程序并尝试测试一些在组件中执行某些逻辑的功能。我有柏树测试,但我现在正在尝试使用 jest。
这个特定的函数需要返回最频繁的字符串。该功能目前有效,就像这样......
favourite(item) {
return item.sort((a,b) =>
item.filter(v => v===a).length
- item.filter(v => v===b).length
).pop();
}
我的测试(目前不工作)看起来像这样......
import React from "react";
import { create } from "react-test-renderer";
import ShoppingCart from "../components/ShoppingCart";
describe("most frequent shopping item", () => {
test("returns the most frequent string in an array", () => {
const component = create(<ShoppingCart />);
const instance = component.getInstance();
items = ["eggs", "jam", "jam", "milk", "bread" ]
expect(instance.favourite(items)).toBe("jam");
});
});
我的测试是读取组件的道具,但得到:
无法读取未定义的属性“长度”
我调用.length
组件中的数组。
任何关于如何在组件中测试简单功能的建议将不胜感激!
解决方案
在你的组件文件内(但在组件外)单独定义函数,导出并测试它,而不需要在测试用例内实例化组件。当然,您也可以在组件内部使用它。
export const favourite = function(item){
return item.sort((a,b) =>
item.filter(v => v===a).length
- item.filter(v => v===b).length
).pop();
}
然后在你的测试中你可以做
import { favourite } from 'path/to/file';
describe('favourite', () => {
it('should return the item that occurs most frequently', () => {
const items = ["eggs", "jam", "jam", "milk", "bread" ]
expect(favourite(items)).toBe("jam");
});
});
推荐阅读
- javascript - 获取 a 不是 react-native expo 托管应用程序中的功能
- android - 使用 NDK 构建 Superpowered 时 Android Studio ExternalSystemException 错误
- react-native - Tipsi-stripe 无法在 android 上调用 deviceSupportNativePay,iOS 工作正常
- python - Python:为熊猫数据框分配新索引
- javascript - 在应用程序脚本中从 HTML 打开新网页中的链接
- perl - perl 中的链接函数有什么作用?
- javascript - HTML/JS:扩展/覆盖原生 html 元素
- python - 拟合一阶传递函数(曲线拟合)
- linux - 如何在 linux ubuntu 机器上运行 puppet forge 模块
- ti-basic - Ti - 基本单应性双线性插值问题