首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jest员工遇到4个子流程异常,超过重试限制

Jest员工遇到4个子流程异常,超过重试限制
EN

Stack Overflow用户
提问于 2021-11-17 15:44:23
回答 3查看 31.3K关注 0票数 17

我对vue和jest测试并不熟悉,在运行特定的测试时,我一直会收到这个错误。我知道这是一个普遍的错误,但我不知道如何钻研和找出什么是错误的。

以下是错误:

代码语言:javascript
运行
复制
 Test suite failed to run

    Jest worker encountered 4 child process exceptions, exceeding retry limit

      at ChildProcessWorker.initialize (node_modules/jest-worker/build/workers/ChildProcessWorker.js:185:21)

以下是失败的测试:

代码语言:javascript
运行
复制
test("signupAsUser logs results if email is provided", async () => {
  const consoleSpy = jest.spyOn(console, "log");
  const email = ref("testuser@scoutapm.com");
  const { signupAsUser } = useSignup(email);

  await signupAsUser();

  expect(consoleSpy).toHaveBeenCalledWith("USER:", mockSignup);
});

下面是正在测试的文件。vue文件:

代码语言:javascript
运行
复制
<!--
  View for user signup operations.
-->
<template lang="pug">
.Signup
    .Signup__focus
        .Signup__title Sign Up
            .Signup__form
                .Signup__field
                    va-input.Signup__emailInput(
                       type="email",
                      name="email",
                      placeholder="Email",
                      v-model="email",
                      @keyup.enter="signupAsUser()"
                    )
                        template(v-slot:prependInner="")
                            va-icon(name="email")
                    .Login__buttonRow
                        va-button.Login__submitButton(@click="signupAsUser") Sign Up
</template>

<script lang="ts">
import { ref, defineComponent } from "vue";
import useSignup from "@/views/Signup/useSignup";

/**
 * Assemble the Signup component
 *
 *  @returns Data for the component to use.
 * - email: of the user to sign up with
 * - signupAsUser: function to call to carry out the login operation.
 */
function setup() {
  const email = ref("");
  const { signupAsUser } = useSignup(email);

  return {
    email,
    signupAsUser,
  };
}

export default defineComponent({
  name: "Signup",
  setup,
});
</script>

<style lang="scss">
//basic scss style taken from Login.vue until button and verification code is added
.Signup {
  position: fixed;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;

  &__focus {
    width: 360px;
    max-width: 95vw;
  }

  &__field {
    padding-bottom: 0.5em;
  }

  &__title {
    font-size: 1.2em;
    padding-bottom: 0.5em;
    text-align: center;
  }
}
</style>

以及打字记录文件:

代码语言:javascript
运行
复制
import { Ref } from "vue";
import { useApolloClient } from "@vue/apollo-composable";
import { ValidatedUser } from "@/models";
import { gql } from "graphql-tag";
import router from "@/router";

const query = gql`
  query Signup($input: Signup) {
    signup(input: $input) {
      __typename
      token
      user {
        emailAddress
        id
      }
    }
  }
`;

/**
 * Retrive apollo client and provide useSignup
 * function to validate input and execute Signup process.
 *
 * @param emailAddress - reactively wrapped emailAddress address of the user signing up.
 * @returns useSignup composition functionality.
 */
export default function useSignup(emailAddress: Ref<string>): {
  signupAsUser: () => Promise<void>;
} {
  const { resolveClient } = useApolloClient();
  /**
   * Execute the Signup process for the specified user values.
   */
  /**
   *
   */
  async function signupAsUser(): Promise<void> {
    console.log("emailAddress " + emailAddress.value);
    if (emailAddress.value.length < 5) {
      console.log("here");
      return;
    } else {
      const client = resolveClient();

      const variables = {
        input: { username: emailAddress.value },
      };
      // const response = await client.query({query, variables});
      console.log("here");
      // const validatedUser: ValidatedUser = response.data.signup;
      // console.log("USER:", validatedUser);
      console.log("emailAddress: ", variables);
    }
    router.push({ path: "/signup/verify" });
  }

  return { signupAsUser };
}

我能得到一个指向正确方向的指针吗?或者错误可能是从哪里来的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-11-30 00:19:37

我也经历过这样的经历,这个问题线程把我引向了正确的方向。有两件事值得尝试:

  1. 您可以尝试将--maxWorkers 2添加到jest测试命令中。
  2. 这个错误似乎是一些问题的混合体,但不明确的承诺拒绝是一个球员。您也可以尝试使用waitFor,看看这是否有帮助。 从'test/test-utils‘测试导入{ waitFor }(“提供电子邮件时的signupAsUser日志结果”),=> { const consoleSpy =jest.spyOn(控制台,"log");const email = ref("testuser@scoutapm.com");const {signupAsUser}=useSignup(电子邮件);等待waitFor(() => signupAsUser();=>mockSignup;});
  3. 这个答案发出了更多的光。 更深层次地讲,这是因为findBy测试返回了一个承诺,因此需要等待。但是,如果库抛出一个更好的错误,https://testing-library.com/docs/guide-disappearance/#1-using-findby-queries会更好。
票数 14
EN

Stack Overflow用户

发布于 2022-09-20 11:53:58

测试套件无法运行。Jest员工遇到4个子流程异常,超过重试限制

我在CI测试中也有同样的错误信息。它影响了我所有的测试用例。这个消息隐藏了真正的问题。您必须将maxWorkers更改为1,以查看单线程的问题所在。然后,您将看到错误的原因,这有助于您解决问题。

票数 4
EN

Stack Overflow用户

发布于 2022-11-22 00:39:53

此错误隐藏了测试或代码中的真正问题。可以连续运行测试,以显示测试jest --runInBand中的实际错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70007464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档