小编Ede*_*ave的帖子

笑话+酶.无法读取未定义的属性'_isMockFunction'.模拟箭头的keyDown

我的主要组件的测试方法存在严重问题.经过多次重试后,我的实际测试仍然不起作用,看起来像这样:

describe('<App />:', () => {
    beforeEach(() => {
        wrapper = mount(<Provider store={store}><App /></Provider>);
    });
    describe('Interaction:', () => {
        it('should call ArrowDown()', () => {
            const instance = wrapper.instance();
            spy = jest.spyOn(instance, 'ArrowDown');
            instance.forceUpdate();
            wrapper.simulate('keyDown', {key: 'Arrow down'});
            expect(spy).toHaveBeenCalled();
        });
    }); 
});
Run Code Online (Sandbox Code Playgroud)

我从控制台得到的是:

TypeError:无法读取未定义的属性'_isMockFunction'

其他测试,如快照或查找App内的其他组件工作正常.我正在寻找simillar问题,但我找到的解决方案无法正常工作.请帮忙.

PS:我使用原型时出现相同的错误:

describe('<App />:', () => {
    beforeEach(() => {
        wrapper = mount(<Provider store={store}><App /></Provider>);
    });
    describe('Interaction:', () => {
            it('should call ArrowDown()', () => {
            spy = jest.spyOn(App.prototype, 'ArrowDown');
            wrapper = mount(<Provider store={store}><App /></Provider>);
            wrapper.simulate('keyDown', …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing reactjs jestjs enzyme

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

许多AJAX请求同时使用CSRF保护

大家好.

我的Web应用程序基于异步请求.定时器小部件正在工作,并且每秒都通过AJAX更新它的状态(是的,这是必要的).

我发送每个AJAX我的CSRF令牌:

project_data.append(csrf_name_key,csrf_name_value);
project_data.append(csrf_value_key,csrf_value_value);
Run Code Online (Sandbox Code Playgroud)

作为回应,我正在更新全局变量:

function setCSRF(response) {
    csrf_name_key = response.nameKey;
    csrf_name_value = response.name;
    csrf_value_key = response.valueKey;
    csrf_value_value = response.value;      
}
Run Code Online (Sandbox Code Playgroud)

一切都很好.但是,如果我将另外的AJAX作为例子,当我将todo列表中的任务更改为"完成"时,它有时会以错误结束,因为我在从前一个请求获取新令牌之前发送AJAX.

我真的不知道如何解决这个问题.第一个想法是我将使用5个不同的令牌制作"像堆栈数组",但是一个https请求=一对令牌,我无法生成它.

也许某种类型的ajax请求队列,但是在适当的时候做什么 - 我不知道.

我的实际伪解决方案是"如果失败再次尝试最多10次":

if(e.target.response=="Failed CSRF check!") {
    if(failedAjax<10) checkForSurvey();
    failedAjax++;
    return;
}
Run Code Online (Sandbox Code Playgroud)

它通常工作,但错误出现在控制台中,这是非常脏的解决方案.

我正在使用带有CSRF扩展的Slim 3微框架.真的请帮助解决这个有趣的问题.

我会非常感激,

亚瑟

javascript php ajax csrf slim

5
推荐指数
1
解决办法
1554
查看次数

React hooks value is not accessible in event listener function

I decided to use React hooks for my component using windom width and resize event listener. The problem is that I can't access current value that I need. I get nested value that was set while adding event listener.

Passing function to value setter function is not a solution for me because it's forcing render and breaking my other functionalities.

I am attaching minimalistic example to present core problem:

import React, { Component, useState, useEffect } from 'react';
import { …
Run Code Online (Sandbox Code Playgroud)

javascript addeventlistener reactjs react-hooks

4
推荐指数
1
解决办法
834
查看次数

mysql datetime和now datetime对象之间的差异

我希望在secounds中的日期之间得到时间,这是我的代码:

$rezultat = $polaczenie->query(sprintf("SELECT terminstart FROM uzytkownicy WHERE id=%d", $_SESSION['id']));
$wiersz = $rezultat->fetch_assoc();

$start = DateTime::createFromFormat('Y-m-d H:i:s', $wiersz['terminstart'])->format('Y-m-d H:i:s');
echo'<script>alert("'.$start.'");</script>';

$teraz = (new \DateTime())->format('Y-m-d H:i:s');
echo'<script>alert("'.$teraz.'");</script>';

$interval = $start->diff($teraz);
echo'<script>alert("'.$interval.'");</script>';
Run Code Online (Sandbox Code Playgroud)

我从警报中看到,$ start工作正常,$ teraz(现在意味着)工作正常,但我甚至没有得到差异的第3个错误.问题是什么?

php mysql datetime

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