当 Javascript switch 语句返回默认 null 时,单元测试失败

问题描述 投票:0回答:2

我有这个帮手

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

如何解决这个问题?

javascript reactjs switch-statement react-testing-library
2个回答
0
投票

如果我理解正确,您的代码实际上是在查看

value
的值,在您的情况下是
''
。这意味着默认情况被正确执行。但是您提供的代码不应在任何地方附加任何内容,该函数应该简单地
return null
并且测试将失败:

Expected: "Test title"
Received: null

请检查您的代码示例是否正确。


0
投票

如果您使用 + 运算符或模板字符串文字,并且您有一个

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”,而不是空白或没有价值。

测试完成了它的工作,并发现了错误,正如之前的答案所建议的那样,如果预期的行为是返回空白或什么都不返回,那么你想返回一个空字符串

''

© www.soinside.com 2019 - 2024. All rights reserved.