我的主要组件的测试方法存在严重问题.经过多次重试后,我的实际测试仍然不起作用,看起来像这样:
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) 大家好.
我的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微框架.真的请帮助解决这个有趣的问题.
我会非常感激,
亚瑟
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) 我希望在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个错误.问题是什么?
javascript ×3
php ×2
reactjs ×2
ajax ×1
csrf ×1
datetime ×1
enzyme ×1
jestjs ×1
mysql ×1
react-hooks ×1
slim ×1
unit-testing ×1