我正在努力学习Redux.我按照在线教程并使用他们的示例,它工作正常.然后我做了另一个小测试应用程序,它工作正常.现在我正在尝试另一个小测试应用程序,我坚持这个错误,不知道为什么.
该应用程序只是一个输入框和一个按钮,当您单击该按钮时,它会将框中的内容添加到下面显示的列表中.
但是,reducer不会更新状态.我已经看过造成这种情况的常见问题,似乎无法找到我的错误,我的减速器不会改变状态,我已经限制了调度等等.也许我只是在某个地方拼错了某些东西(或者像那样小而愚蠢的东西),但我无法让它发挥作用.
因此我尝试更改它,以便它只显示您在下面的框中输入的内容,并且它仍然无法正常工作.任何人都知道为什么减速器没有激活?
index.js(主要)
import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux';
import {createStore, applyMiddleware} from 'redux';
import thunk from 'redux-thunk';
import promise from 'redux-promise';
import createLogger from 'redux-logger';
import allReducers from './reducers';
import App from './components/App';
const logger = createLogger();
const store = createStore(
allReducers,
applyMiddleware(thunk, promise, logger)
);
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)
App.js
import React from 'react';
import NameList from '../containers/name-list.js'
import Input from '../containers/input.js'
const …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过其REST API与Keycloak进行交互。我有主领域和默认的admin用户,以及测试领域。首先,我获得了管理员帐户和测试领域的访问令牌:
let data = {
grant_type : 'password',
client_id : 'test-realm',
username : 'admin',
password : 'admin'
};
let headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
axios.post(
'https://someurl.com:8080/auth/realms/master/protocol/openid-connect/token',
qs.stringify(data),
headers
)
Run Code Online (Sandbox Code Playgroud)
没关系。然后,我尝试拨打电话来创建用户(或执行其他任何操作),然后收到401未经授权的错误:
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': `Bearer ${accessToken}`
};
data = {
rep: {
email: "test@email.com",
username: "test@email.com"
},
path: 'test-realm'
};
axios.post('https://someurl.com:8080/auth/admin/realms/test-realm/users',
qs.stringify(data),
headers
)
Run Code Online (Sandbox Code Playgroud)
这不是包含令牌的正确方法吗?访问令牌是您用来认证其他API调用的令牌吗?管理员帐户的令牌不应该用于通过主领域验证对其他客户端的呼叫吗?我必须在管理控制台中更改主领域中的某些设置吗?任何帮助表示赞赏。
我已经尝试解决这个问题一段时间了,现有的问题都没有帮助。我正在使用Selenium WebDriver 的节点实现,版本^4.0.0-alpha.1并使用最新的 ChromeDriver 在 Chrome 上测试它。
我正在尝试清除 的文本<input/>,其type="email". WebDriver 有一个内置命令,但是当我执行它时,输入没有清除(并且没有错误):
// This populates the text field, no problem
driver.findElement(By.id("model-auth-email")).sendKeys("test@gmail.com");
// This is executed without error, but nothing happens, text field isn't cleared
driver.findElement(By.id("model-auth-email")).clear();
Run Code Online (Sandbox Code Playgroud)
我不能使用CTRL+ a&BACKSPACE方法,因为我使用的是 Mac,它会是CMD+ a。CMD根据我能找到的各种线程,ChromeDriver 有(仍未解决)支持原生 OSX按钮输入的问题已有 6 年之久。
我也可以做一些类似循环BACKSPACE输入的事情,直到它被清除,尽管这很hacky。
关于为什么.clear()默默地不起作用的任何想法?
我正在使用jest 23.1.0和supertest 3.1.0。我正在为后端编写一些测试,一切进展顺利,但是对于特定路由的特定情况,即使响应对象似乎包含正确的信息,测试也会失败。测试是检查参数是否是有效的 JSON,如下所示:
describe(\'GET /graph\', () => {\n it(\'invalid JSON\', (done) => {\n request(app)\n .get(\'/graph\')\n .set(\'Accept\', \'application/json\')\n .expect(\'Content-Type\', /json/)\n .expect(415)\n .then(done);\n });\n});\nRun Code Online (Sandbox Code Playgroud)\n\n在这种情况下,我实际上根本没有发送任何参数,但即使我确实发送了一些无效的 JSON,问题也是一样的。无论如何,这两种情况都会触发相同的后端检查,即:
\n\nmodule.exports = (req, res, next) => {\n\n let dataParameters;\n try {\n dataParameters = JSON.parse(req.query.dataParameters);\n }\n catch(error) {\n return(res.status(415).send({\n message: "Request parameters are not a valid JSON object",\n other: `${error.name} - ${error.message}`\n }));\n }\n ...\nRun Code Online (Sandbox Code Playgroud)\n\n当我运行 jest 时,测试失败,控制台的输出如下:
\n\n GET /graph\n \xe2\x9c\x95 invalid JSON (6ms)\n\n \xe2\x97\x8f GET /graph …Run Code Online (Sandbox Code Playgroud) node.js ×2
access-token ×1
api ×1
http ×1
https ×1
javascript ×1
jestjs ×1
keycloak ×1
reactjs ×1
redux ×1
state ×1
supertest ×1
testing ×1
unauthorized ×1