我有这个帮手
const getPrefix = ({ value }: MyValue) => {
switch (value) {
case 'Value one':
return 'Prefix one';
case 'Value two':
return 'Prefix two';
default:
return null;
}
};
但是我的测试失败了:
describe('getPrefix', () => {
it('should generate prefix correctly', () => {
expect(
getPrefix({
title: 'Test title',
value: '',
})
).toBe('Test title');
});
});
它说:
Expected: "Test title"
Received: "Test title null"
我添加
null
?
如何解决这个问题?
如果我理解正确,您的代码实际上是在查看
value
的值,在您的情况下是 ''
。这意味着默认情况被正确执行。但是您提供的代码不应在任何地方附加任何内容,该函数应该简单地 return null
并且测试将失败:
Expected: "Test title"
Received: null
请检查您的代码示例是否正确。
如果您使用 + 运算符或模板字符串文字,并且您有一个
null
值 E.G.
let title = 'SWE'
let subtitle = null
let fullTitle = title + subtitle
// `${title} ${subtitle}` will have the same effect
console.log(fullTitle) // SWE null
像这样使用 null 的问题是它有一个 toString 方法,这意味着如果你用模板文字或 + 运算符强制它,并且第一个操作数是一个字符串,它会将 null 强制转换为“null”,而不是空白或没有价值。
测试完成了它的工作,并发现了错误,正如之前的答案所建议的那样,如果预期的行为是返回空白或什么都不返回,那么你想返回一个空字符串
''