Jest 在这方面给出的解决方案很少。我已经尝试了大多数解决方案,例如--findRelatedTests,,--onlyChanged。--changedSince但每种解决方案都存在一些缺点。我认为--changedSince这是最适合我的。
jest --changedSince=origin/master --coverage
Run Code Online (Sandbox Code Playgroud)
它主要涵盖基本场景,例如运行与更改的源文件相对应的测试文件。但它不能处理少数情况,例如删除源文件(例如a.js)并且在另一个文件(例如)中使用(导入)same(),它不会对任何文件运行测试(a.jsb.jsa.js或b.js。它似乎没有对导入它的父文件运行测试。
是否有一个干净的解决方案可以处理所有场景,例如文件重命名/删除、动态导入、对导入的父模块运行测试或更改源文件时可能发生的任何其他影响?
我正在尝试实现一个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)中以供重用?
根据文档,我没有使用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) 我在GIT中遇到了一个奇怪的问题。最近,我们的代码库已从SVN迁移到GIT。因此,当我在本地上克隆存储库并且在文件中进行单行更改时,git diff显示整个文件已更改(首先删除了所有内容,然后再次添加了所有内容)。但是奇怪的是,并不是所有文件都发生了。
例如,我已经改变(如行后添加一个空格)本人app.js,index.html并gruntfile.js在那里它显示了正确的路线DIFF app.js和完整的文件变化index.html和gruntfile.js
我已经引用了许多stackoverflow文章,并设置core.autocrlf为true和false,但是所有设置都不起作用。
另一个奇怪的事情是我也无法重置该文件。假设在上面的示例中,如果执行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) javascript ×3
bitbucket ×1
git ×1
github ×1
jestjs ×1
reactjs ×1
unit-testing ×1
web-worker ×1
webpack ×1