小编Deb*_*der的帖子

JEST:是否有一种解决方案可以仅针对已更改/受影响的文件运行测试?

Jest 在这方面给出的解决方案很少。我已经尝试了大多数解决方案,例如--findRelatedTests,,--onlyChanged--changedSince但每种解决方案都存在一些缺点。我认为--changedSince这是最适合我的。

jest --changedSince=origin/master --coverage
Run Code Online (Sandbox Code Playgroud)

它主要涵盖基本场景,例如运行与更改的源文件相对应的测试文件。但它不能处理少数情况,例如删除源文件(例如a.js)并且在另一个文件(例如)中使用(导入)same(),它不会对任何文件运行测试(a.jsb.jsa.jsb.js。它似乎没有对导入它的父文件运行测试。

是否有一个干净的解决方案可以处理所有场景,例如文件重命名/删除、动态导入、对导入的父模块运行测试或更改源文件时可能发生的任何其他影响?

javascript unit-testing jestjs

12
推荐指数
1
解决办法
1万
查看次数

在反应中从父组件调用子组件的方法是反模式吗?为什么?

我正在尝试实现一个Wizard用户可以使用以下模式使用的特定组件。

<Wizard {...wizardProps} onFinish={this.handleFinish}>
    <WizardStep onValidate={() => this.componentARef.isValid()}>
        <ComponentA onRef = { ref => (this.componentARef = ref)}/>
    </WizardStep>

    <WizardStep onValidate={() => this.componentBRef.isValid()}>
        <ComponentB onRef = { ref => (this.componentBRef = ref)}/>
    </WizardStep>

    <WizardStep onValidate={() => this.componentCRef.isValid()}>
        <ComponentC onRef = { ref => (this.componentCRef = ref)}/>
    </WizardStep>
</Wizard>
Run Code Online (Sandbox Code Playgroud)

现在考虑反应方式,我们不能/不应该从父组件调用子组件的方法。在这里,我想在每个组件中保留一个方法,单击按钮时isValid将从父组件中调用该方法。React 方式建议将状态和逻辑移动到父组件。但这样我将无法在任何其他向导或任何其他地方重用相同的组件,或者我将不得不在每个正在使用. 使用或这种方法我可以轻松访问子组件的方法()。WizardNext/FinishComponentAComponentArefisValid

截至今天(React 版本 16.6),我没有看到在 React 中根据需要使用此模式有任何陷阱。在反应中使用这种模式可能会遇到什么问题?在这个特定的示例中是否有更好的选择,使用它我可以将isValid方法保留在步骤组件(例如ComponentA)中以供重用?

javascript reactive-programming reactjs

6
推荐指数
1
解决办法
1464
查看次数

如何配置 webpack 5 正确捆绑模块 Web Worker 脚本以导入其他模块?

根据文档,我没有使用worker-loader,我正在尝试使用webpack-5 文档建议的本机方式。

下面是worker脚本在主线程中的用法。

const worker = new window.Worker(
    new URL("../workers/listOperation.worker.js", import.meta.url),
    {
        type: "module",
    },
);
worker.postMessage({ list: hugeList, params: reqData });
worker.onerror = err => console.error(err);
worker.onmessage = e => {
    const { list } = e.data;
    // Usage of `list` from the response
    worker.terminate();
};
return worker;
Run Code Online (Sandbox Code Playgroud)

如果脚本中没有使用导入,它就可以正常工作。但是,当我从本地导入任何节点模块(例如loadash/get)或任何其他函数/常量时,它不起作用,因为输出 webWorker 捆绑文件不会转译和捆绑导入的代码。它保持“导入”声明不变。

下面是工作脚本 ( listOperation.worker.js)

import get from "lodash/get";
import { ANY_CONSTANT } from "../constants"; // This is some local constant …
Run Code Online (Sandbox Code Playgroud)

javascript web-worker webpack

6
推荐指数
0
解决办法
997
查看次数

git diff显示完整文件已更改,仅更改了一行,但仅目录中的几个文件已更改

我在GIT中遇到了一个奇怪的问题。最近,我们的代码库已从SVN迁移到GIT。因此,当我在本地上克隆存储库并且在文件中进行单行更改时,git diff显示整个文件已更改(首先删除了所有内容,然后再次添加了所有内容)。但是奇怪的是,并不是所有文件都发生了。

例如,我已经改变(如行后添加一个空格)本人app.jsindex.htmlgruntfile.js在那里它显示了正确的路线DIFF app.js和完整的文件变化index.htmlgruntfile.js

我已经引用了许多stackoverflow文章,并设置core.autocrlftruefalse,但是所有设置都不起作用。

另一个奇怪的事情是我也无法重置该文件。假设在上面的示例中,如果执行git reset --hard,则不会从本地删除/还原有缺陷的文件,此处app.js已还原,但其他两个未还原。最后,我不得不使用git checkout .还原所有文件。

更新:这是我的.gitattribute文件内容,位于根目录中。 * text=auto

这是我在根目录下的.editorconfig文件。

root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false
Run Code Online (Sandbox Code Playgroud)

git github bitbucket

4
推荐指数
3
解决办法
4005
查看次数