对于测试用例中indexOf()的问题
来源:12-4 单元测试和总结

Bingyuan
2019-12-15
老师,有个问题我百思不得其解,虽然是小问题,也可以跳过,但还是麻烦老师帮我看看。
是这样的,我在单元测试中测试at列表功能时,发现一个问题,为了方便,我把lisi的字符串常量写到代码块里了,整个代码块是这样的:
test('获取at列表,应该能成功', async () => {
const LUSERNAME = 'lisi';
const result = await server
.get('/api/user/getAtlist')
.set('cookie', Z_COOKIE);
function checkUser(user) {
return user.indexOf(`- ${LUSERNAME}`);
}
const haveUser = result.body.some(user => {
return checkUser(user);
});
expect(haveUser).toBeTruthy();
});
这样做,是没有问题的,但是当我把第八行代码改为return user.indexOf(LUSERNAME);
或者return user.indexOf(${LUSERNAME});
时,就报错了,说received False,也就是说如果我不是用- ${LUSERNAME}
这样的字符串模板写法就会报错。我在外面专门写了个函数测试indexOf函数,代码是这样写的
const strExa = ['why - whyit', 'what - what'];
const WHY = 'whyit';
function checkIndex(str) {
return str.indexOf(WHY);
}
const result = checkIndex(strExa[0]);
const result2 = strExa.some(item => {
return checkIndex(item) > 0;
});
console.log(result);
console.log('第二个结果是:', result2);
得出的结果是这样的:
7
第二个结果是: true
在测试中发现完全没有必要写模板字符串啊,查也查不出来原因。虽然是个小问题,但是就是有点难受,老师请指导一下,谢谢!
写回答
1回答
-
双越
2019-12-15
其实,我没太看懂你的问题,感觉乱乱的。。。我先回复一下我 get 到的,然后你再补充。
return user.indexOf(${LUSERNAME}); —— 这么写肯定会报错,${xxx} 必须用模板字符串。
测试使用 `- ${username}` 这种形式,是为了匹配 '- username' 格式而不仅仅是匹配 'username' ,让测试更加精准一些。
022019-12-15
相似问题