我在子阵列,子序列和子集之间有点困惑
如果我有 {1,2,3,4}
然后
子序列可以是{1,2,4}OR {2,4}等.所以基本上我可以省略一些元素但保持顺序.
子阵列(比如3号子阵)
{1,2,3}
{2,3,4}
Run Code Online (Sandbox Code Playgroud)
那么子集是什么?
我对这3个人感到有点困惑.
在下面放入一个小片段:
import xyz from '../xyz'
function calculate() {
return xyz(arg1, arg2).catch((err) => {
func1()
func2()
})
}
export default calculate
Run Code Online (Sandbox Code Playgroud)
我只是想断言 xyz 是开玩笑地调用的。我该怎么做 ?
我尝试了以下方法但不起作用:
import * as myModule from '../xyz'
import calculate from '../../calculate'
const mock = jest.spyOn(myModule, 'xyz')
mock.mockReturnValue('mocked value')
const op = calculate()
expect(op).toBe('mocked value')
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
无法监视 xyz 属性,因为它不是函数;未定义给定代替
这个问题只是关于单元测试。
最近,我读了很多有关快照的内容,我真的很困惑,到底什么时候应该使用快照测试,而不是只使用显式断言。我使用react&jest&enzyme进行单元测试
据我了解,使用快照测试绝对有意义:检查组件是否按照我们预期的方式使用预期的 props 进行渲染。这样我们就不必为每个 prop 或渲染的每个组件等进行断言
问题:1)但是当涉及到模糊或点击等用户交互时,可能会有很多情况。在这种情况下,对每个测试用例进行快照有意义吗?假设我有 10 个不同的情况想要测试 onBlur。那么为此设置 10 个不同的快照有意义吗?我知道我们可以使用序列化器来过滤掉我们想要在快照上看到的内容,但不仅仅是使用单个断言进行常规数据驱动测试(其中包含开发人员提供的输入和预期输出)更好吗?
2)当我有一个组件依次渲染几个子组件并且这些子组件渲染它们的子组件等时怎么样。在这种情况下,我安装然后拍摄快照。这个快照变得非常巨大,我再次知道我们可以通过使用序列化器来调整它。但在这种情况下,快照到底有什么好处呢?
3) 一般来说,拥有太多快照不是一件坏事吗?
我还遇到了一些奇特的工具,例如 jest-glamor-react 等,它们可用于充分利用快照测试。但实际上,我如何确定哪种场景最适合使用快照进行测试,哪种场景最适合使用常规断言进行测试?我读了很多文章,但有些人对快照印象深刻,但这些示例非常基础。有些人完全反对它,并认为简单的旧断言更好。有人可以分享他们的观点吗?
我正在尝试测试以下功能
getVal(process) {
test.on('data', async data => {
try {
for (const val of data) {
await process(val);
console.log('processed')
}} catch (e) {}
});
test.on('error', err => {
console.log('error', err)
});
}
process(payload) {
return new Promise(resolve=>{.....})
};
Run Code Online (Sandbox Code Playgroud)
玩笑测试: // 在 beforeEach 中
mockData =[an array containing 10 values]
onSpy = jest
.fn()
.mockImplementationOnce(async (data, callback) => {
callback(mockData);
})
.mockImplementationOnce((error, callback) => {
callback(mockErr);
});
it('should trigger callback once per message', async () => {
await xyz.getVal(process);
await expect(process).toHaveBeenCalledTimes(10); …Run Code Online (Sandbox Code Playgroud) javascript ×3
jestjs ×3
unit-testing ×2
arrays ×1
enzyme ×1
mocking ×1
node.js ×1
reactjs ×1
subsequence ×1
subset ×1