【问题标题】:jest + graphql integration tests displaying errorsjest + graphql 集成测试显示错误
【发布时间】:2018-03-14 07:09:04
【问题描述】:

我正在针对我的 dbgraphql 服务器编写集成测试。
jest 是我的测试运行程序和断言库。

对于每个测试,我确认我没有任何错误:

const actual = await graphql(schema, query);
expect(actual.errors).toBeUndefined();

当我的测试失败时(一路上出现问题),
actual.errors 不是 undefined,我希望 jest 显示错误,
但这就是我得到的:

Expected value to be undefined, instead received
  [[GraphQLError: Invalid value [object Object]]]

如果我看不到“无效值”是什么,则此错误消息毫无用处。
如何配置jest 使其打印错误对象?

【问题讨论】:

    标签: javascript typescript graphql jestjs


    【解决方案1】:

    错误消息是GraphQLError: Invalid value [object Object],当您打算传递对象时,您可能正在传递字符串[object Object]。或者你的模式有一个字符串,你认为它有一个对象,或者当你应该传递一个字符串时你正在传递一个对象。如果没有您的架构、查询或根,我只是在猜测。

    graphql 对象有一些不会自动记录的属性。然而,它们确实有助于调试。 error.patherror.stack 是我的最爱。您可以在error object source 中查看它们的完整列表。

    【讨论】:

      【解决方案2】:

      这与jest无关。[object Object]object.toString()返回,它由错误日志的打印机调用。 如果您想查看object 的详细信息,您需要重写 objecttoString 就像下面的代码:

      obj = {x:"x"};
      alert(obj)
      obj.toString = function(){return JSON.stringify(obj)};
      alert(obj)
      

      【讨论】:

      • 为了做到这一点,我需要覆盖语言Object,这是一个非常糟糕的主意......
      • 是的,覆盖原生Object 是个坏主意,但是您可以覆盖要打印的对象,覆盖toString() 是一种通用的java 登录方法,参考: stackoverflow.com/questions/10734106/…。我把它比作 javascript。
      猜你喜欢
      • 2018-07-02
      • 1970-01-01
      • 2018-11-03
      • 2013-08-22
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      相关资源
      最近更新 更多