我发现了'ThreadStaticAttribute',我有很多关于它的问题:我以前所有依赖于线程的静态信息都是作为一个静态字典实现的,TKey是Thread,当我想访问它时,我使用了Thread.CurrentThread和那个作品.但这需要mantainance,因为如果一个线程死了,我必须从字典中删除相应的条目.我还需要考虑线程安全以及许多其他问题.
通过使用ThreadStaticAttribute,所有这些问题似乎都得到了解决,但我需要确定它.我的问题是:在线程死之前,我是否需要以某种方式删除'ThreadStaticAttribute'标记字段的实例保留?那个领域的信息在哪里举行?它是在Thread对象的实例中,或类似的东西,所以当它不再使用时,垃圾收集器会自动丢弃它?是否有性能损失?什么?它比我正在使用的Keyed集合更快吗?
请,我需要澄清'ThreadStaticAttribute'的工作原理.
谢谢.
我正在尝试在量角器上实现排序方法ElementArrayFinder.众所周知,所有量角器方法都会返回承诺.所以我的排序方法有一个依赖于promises解决方案的条件.我正在使用节点插件,async/await以使其与低于6的node.js版本兼容.(这里的插件:https://www.npmjs.com/package/asyncawait)
在这里我的代码,其中this是ArrayElementFinder:
var asyncCompare = async(function(a, b) {
let x = await (a.getText());
let y = await (b.getText());
console.log(x.localeCompare(y));
return x.localeCompare(y);
});
var sortTheArray = async(function(arrayOfElementFinders) {
return await (arrayOfElementFinders.sort(asyncCompare));
});
this.then((elements) => {
let arrayOfElementFinders = [elements[0], elements[1], elements[2]];
let sortedArray = sortTheArray(arrayOfElementFinders);
console.log('array sorted');
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,时序执行不是我期望的.印刷:array sorted发生在比之前的印刷品上x.localeCompare(y).知道我做错了什么吗?任何想法如何实现我的目标?
非常感谢您的帮助
我对Jest完全陌生。
我正在使用带有Typescript的React,并且在单元测试中,我必须模拟一个模块,该模块包含在我要为其编写容器测试(容器组件)的主文件中。
我尝试测试的文件导入了此模块:
import PerformancesResultsReader from './../../models/PerformancesResultsReader';
Run Code Online (Sandbox Code Playgroud)
然后它通过以下方式使用该模块:
const performancesResultsReader = new PerformancesResultsReader();
performancesResultsReader.read();
Run Code Online (Sandbox Code Playgroud)
该文件称为 AppPage.component.tsx
测试文件位于同一文件夹中,当我使用自动模拟时,它可以按预期工作。自动模拟是通过jest mock相同导入的来简单实现的:
jest.mock('./../../models/PerformancesResultsReader');
Run Code Online (Sandbox Code Playgroud)
这样,所有方法都简单地返回undefined。
现在,我试图添加一个手动模拟而不是自动模拟。
这是PerformancesResultsReader.js模拟代码:
console.log('including mock!');
const mock = jest.fn().mockImplementation(() => {
return {
read: () => {
console.log('mocked');
}
};
});
export default mock;
Run Code Online (Sandbox Code Playgroud)
我试图将其放置__mocks__在与我正在测试的文件相同级别的子文件夹中,并且尝试将其也放置在要模拟的导入模块的同一文件夹中。在这两种情况下,它似乎根本没有被调用(第一个控制台日志永远不会被打印)。
请问我做错了什么吗?
我是一个开玩笑的新手,我正在为我的 React 应用程序编写单元测试,该应用程序使用 redux 并使用 Typescript 编写。
我的容器组件包含这段代码:
const mapDispatchToProps = (dispatch: Dispatch<any>) => ({
onSelectScenario: (selectedScenario: any) => {
dispatch(selectScenario(selectedScenario));
}
});
Run Code Online (Sandbox Code Playgroud)
我想编写一个单元测试,检查当我从测试 ( onSelectScenario) 调用此道具时,dispatch将使用正确的参数调用该方法。
知道如何监视这个吗dispatch?
这是我的单元测试,我在其中调用 prop 方法:
it('should dispatch', () => {
component.props().onSelectScenario('New Selected Scenario');
});
Run Code Online (Sandbox Code Playgroud)
这是测试的设置,我在其中定义提供模拟商店的容器组件:
const mockStore = configureMockStore();
let store = mockStore({
scenarios: ['Scenario 1', 'Scenario 2']
});
let component: ShallowWrapper<any, any>;
describe('ScenarioListGroupContainer Component', () => {
beforeEach(() => {
component = shallow(<ScenarioListGroupContainer store={store} />);
});
// ... …Run Code Online (Sandbox Code Playgroud) 我正在编写一个计算物体深度的函数.
这是我的递归版本,似乎按预期工作:
function findDepth(obj, firstCall = true) {
if (firstCall && typeof obj !== "object") {
return -1;
}
return Object.keys(obj).reduce((max, k) => {
if (typeof obj[k] === "object" && obj[k] !== null) {
const val = findDepth(obj[k], false) + 1;
if (val > max) {
max = val;
}
}
return max;
}, 1);
}
const input1 = {
a: {
b: "test",
c: {
d: {
e: {
f: [1, 2, 3],
g: {
a: null,
z: { …Run Code Online (Sandbox Code Playgroud)我正在使用react 16and react router 4, webpackand webpack dev server。
我确实有以下几点Route:
<Route path="/company/:symbol" render={this.getCompanyPageRoute} />
Run Code Online (Sandbox Code Playgroud)
我确实通过以下方式导航到这条路线:
this.props.history.push('/company/blablabla');
Run Code Online (Sandbox Code Playgroud)
一切正常。但是,如果我使用此 URL 刷新页面,则会出现以下错误:
未捕获的语法错误:意外的标记 <
我已经看到有几个关于这个错误的帖子,但我并没有按照这些链接来解决这个问题。
javascript ×3
reactjs ×3
jestjs ×2
react-redux ×2
typescript ×2
algorithm ×1
async-await ×1
c# ×1
ecmascript-6 ×1
promise ×1
protractor ×1
react-router ×1
react-tsx ×1
redux ×1
sorting ×1
static ×1