Javascript 如何测试返回的值?

Javascript 如何测试返回的值?,javascript,typescript,unit-testing,jestjs,tdd,Javascript,Typescript,Unit Testing,Jestjs,Tdd,我有一个简单的函数,我想用Jest测试它。我读了很多遍,但我不确定哪里出了问题,也找不到关于stackoverflow的明确答案。我觉得这是一个非常简单的测试 以下是我的功能: public hello(name: string) { return 'Hello ' + name } 这是我的测试: let hello = jest.fn() jest.mock('./myfile.ts', () => { return hello }) beforeEach(() =>

我有一个简单的函数,我想用Jest测试它。我读了很多遍,但我不确定哪里出了问题,也找不到关于stackoverflow的明确答案。我觉得这是一个非常简单的测试

以下是我的功能:

public hello(name: string) {
  return 'Hello ' + name
}
这是我的测试:

let hello = jest.fn()
jest.mock('./myfile.ts', () => {
  return hello
})

beforeEach(() => {
  hello('world')
})

describe('hello test', (){
  it('expects to return concatenated string', () => {
    expect(hello.mock.results[0].value).toBe('Hello world') // returns as undefined - Test fails
  })
})
我一直在为mock.results而不是“Hello world”定义未定义的内容


我做错了什么?我觉得我忽略了一些非常简单的东西。

您试图模拟一个要测试的函数。您应该只模拟其他依赖项

这就足够了:

expect(hello('world')).toBe('Hello world')

您正在尝试模拟要测试的函数。您应该只模拟其他依赖项

这就足够了:

expect(hello('world')).toBe('Hello world')

看起来很有效!我已经实现了一些导致问题的其他代码。谢谢你的回答!看起来很有效!我已经实现了一些导致问题的其他代码。谢谢你的回答!