开玩笑测试问题

Posted

技术标签:

【中文标题】开玩笑测试问题【英文标题】:Jest testing issue 【发布时间】:2020-03-25 14:51:49 【问题描述】:

大家好,我正在尝试使用 Jest 测试以下代码,但是在运行测试时我收到了 mData 未定义的错误。请查看下面的代码,如果可能的话,请让我知道我哪里出错了。提前致谢。

function createMilkShakeData(mData) 

 

 describe("milkshake Data Generator", () => 
 it("creates correct data structure ", () => 
  const mData = [
    "milkshake1/milkshake1flavour",
    "milkshake1/milkshake1flavor2",
    "milkshake2/milkshake2flavour",
    "milkshake2/milkshake2flavour2",
    "milkshake1/milkshake1flavour3",
    "flavour3",
    "milkshake3/flavour3flavour1",
    "milkshake4"
  ];

  const expectedResult = [
    
      title: "milkshake1",
      data: ["milkshake1flavour", "milkshake1flavour2", "milkshake1flavour3"]
    ,
     title: "milkshake2", data: ["milkshake2flavour", "milkshake2flavour2"] ,
     title: "milkshake3", data: ["milkshake3flavour1"] 
  ];

  const actualResult = createMilkShakeData(mData);
  expect(actualResult).toMatchObject(expectedResult);
);
);

module.exports = createMilkShakeData
module.exports = mData

下面的测试文件中的代码

    const createMilkShakeData = require('./milkshake')

    const data = require('./milkshake')

    test('milkshake Data Generator', () => 

    const actualResult = createMilkShakeData(mData);
  expect(actualResult).toMatchObject(expectedResult)
  )

【问题讨论】:

您发布的内容毫无意义。您需要来自同一个文件的不同名称两次,您在文件中有一个测试,您暗示是正在测试的代码并且该函数没有实现。很难理解您为什么期望这会起作用。 就像@jonrsharpe 所说,您需要添加更多信息。 【参考方案1】:

mData 未在您的第一个文件的全局范围内定义 - 它仅在函数范围内定义 - 在本例中为来自 Jest 的 it。如果您需要导出它,请在全局范围内定义它(即在您的“描述”之前)。

【讨论】:

以上是关于开玩笑测试问题的主要内容,如果未能解决你的问题,请参考以下文章

开玩笑 你的测试套件必须至少包含一个测试

在所有测试运行后开玩笑清理

开玩笑测试中 UnhandledPromiseRejectionWarning 的含义是啥?

createWriteStream 的 ('error') 上的开玩笑单元测试

开玩笑 - 如何测试组件是不是不存在?

开玩笑:测试套件无法运行,意外令牌 =