我有这个函数,我希望返回添加了参数的url
export const addParamsToURL = (
params: param | param[],
url?: string
): string => {
if (!url) return ''
const __url = new URL(url)
const __params = new URLSearchParams(__url.search)
if (params instanceof Array) {
params.map(({key, value}) => __params.append(key, value))
} else {
__params.append(params.key, params.value)
}
return `${__url.origin}${__url.pathname}?${__params}`
}
我创建了下面的场景测试,我想知道我是否应该为它做一个模拟,什么是最好的方法。我真的需要嘲笑吗?笑话。fn, jest.mock ?我对测试还是很陌生的
import {addParamsToURL} from '../../src/utils/addParamsToURL'
const baseURL = 'https://www.idinheiro.com.br'
const singleParam = {key: 'a', value: 'b'}
const multipleParams = [
{key: 'a', value: 'b'},
{key: 'c', value: 'd'},
]
describe('AddParamsToURL input a base url and params returns the full URL', () => {
it('Should return "" if not given a url', () => {
const res = addParamsToURL(singleParam, undefined)
expect(res).toBe('')
})
it('Should return the full url if given a simple param', () => {
const res = addParamsToURL(singleParam, baseURL)
expect(res).toBe('https://www.idinheiro.com.br/?a=b')
})
})
此实用函数与Reactjs和react-testing-library
无关。您不需要模拟对象来测试这个函数。这个函数是纯粹的,你的测试方法是正确的。
一些常见的场景模拟是有用的:
- 真实对象具有不确定性行为
- 真实对象设置比较复杂
- 真实对象具有难以触发的行为
- 真实对象慢
- 真实对象是一个用户界面
- 真实对象使用回调
- 实际对象还不存在
另请参见何时应该mock?