React 的新手,但不是测试应用程序。
我想确保每次组件抛出错误时都会显示 ErrorBoundary 消息。如果你不知道我所说的 ErrorBoundary 是什么意思,这里是一个链接。
假设我们需要使用以下测试配置来测试React 计数器示例。
// DOM
import jsdom from 'jsdom';
const {JSDOM} = jsdom;
const {document} = (new JSDOM('<!doctype html><html><body></body></html>')).window;
global.document = document;
global.window = document.defaultView;
global.navigator = global.window.navigator;
// Enzyme
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({ adapter: new Adapter() });
// Chai
import chai from 'chai';
import chaiEnzyme from 'chai-enzyme';
chai.use(chaiEnzyme());
Run Code Online (Sandbox Code Playgroud)
在阅读了有关连接组件的最佳测试方法(涉及类似问题)的对话 …
我正在尝试测试在 TweenMax 动画后更改状态的组件。浏览器上一切正常,但我无法理解如何为其编写测试。
问题是Jest不会等待动画完成,因此状态不会改变。
我也试过jest.runAllTicks()和jest.runAllTimers()
这里的一些代码最终会模拟我正在做的事情:
class HelloWorld extends React.Component {
constructor(props) {
super(props);
this.state = { done: false };
this.p;
}
componentDiDMount() {
TweenMax.to(ReactDOM.findDOMNOde(this.p), 1, {
onComplete: () => {
this.setState({ done: true })
}
})
}
renderMessage() {
if (this.state.done) {
return "Hello World";
} else {
return "Loading...";
}
}
render () {
return <p ref={p => this.p = p}>{this.renderMessage()}</p>;
}
}
Run Code Online (Sandbox Code Playgroud)
describe("test",()=>{
it("works", ()=>{
const …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Kubernetes 在 Digital Ocean 上设置一个 MySQL pod。
我不断收到此错误:
Initializing database
2019-03-05T14:32:58.707421Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-03-05T14:32:58.708753Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2019-03-05T14:32:58.711746Z 0 [ERROR] Aborting
Run Code Online (Sandbox Code Playgroud)
我的 yaml 有很多东西,但对这部分配置感兴趣的行如下。
# ------------------- Persistent Volume Claim ------------------- #
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-mysql-volume-claim
...
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: do-block-storage
---
# ------------------- …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Shopify Storefront API 和 Axios 在本地开发电子商店。
Shopify给我一个回应时,我使用axios()
,但它返回403 Forbidden
时,我做同样的事情axios.post()
。
这两者有什么区别?
axios.post(
SHOPIFY_DOMAIN,
{
headers: {
"Content-Type": "application/graphql",
"X-Shopify-Storefront-Access-Token": SHOPIFY_TOKEN
},
data: `{ shop }`
})
Run Code Online (Sandbox Code Playgroud)
axios({
method: "post",
url: SHOPIFY_DOMAIN,
headers: {
"Content-Type": "application/graphql",
"X-Shopify-Storefront-Access-Token": SHOPIFY_TOKEN
},
data: `{ shop }`
})
Run Code Online (Sandbox Code Playgroud) 我想在本地计算机 (macOS) 上访问和编辑 Kubernetes PersistentVolume 中的文件,但我不知道在哪里可以找到这些文件!
我指着我的hostPath
,/tmp/wordpress-volume
但我无法在任何地方找到它。我想念的隐藏秘密是什么
我在docker-for-desktop cluster上使用以下配置Version 2.0.0.2 (30215)
。
kind: PersistentVolume
metadata:
name: wordpress-volume
spec:
# ...
hostPath:
path: /tmp/wordpress-volume
Run Code Online (Sandbox Code Playgroud)
kind: PersistentVolumeClaim
metadata:
name: wordpress-volume-claim
# ...
Run Code Online (Sandbox Code Playgroud)
kind: Deployment
metadata:
name: wordpress
# ...
spec:
containers:
- image: wordpress:4.8-apache
# ...
volumeMounts:
- name: wordpress-volume
mountPath: /var/www/html
volumes:
- name: wordpress-volume
persistentVolumeClaim:
claimName: wordpress-volume-claim
Run Code Online (Sandbox Code Playgroud) 我在教自己如何使用redux-saga
,同时教自己单元测试,特别是Jest.我从redux-saga的文档中获取了一个样本saga,这里:
http://yelouafi.github.io/redux-saga/docs/advanced/NonBlockingCalls.html
......并为了我自己的目的修改它.它应该是一个简单的身份验证处理程序,它侦听登录或注销操作(因为该函数不知道用户是否登录),然后采取适当的操作.我已经在应用程序中测试了该功能,它似乎按预期运行,这很棒.这是功能:
function* authFlow() {
while (true) {
const initialAction = yield take (['LOGIN', 'LOGOUT']);
if (initialAction.type === 'LOGIN') {
const { username, password } = initialAction.payload;
const authTask = yield fork(
authorizeWithRemoteServer,
{ username: username, password: password }
);
const action = yield take(['LOGOUT', 'LOGIN_FAIL']);
if (action.type === 'LOGOUT') {
yield cancel(authTask);
yield call (unauthorizeWithRemoteServer)
}
} else {
yield call (unauthorizeWithRemoteServer)
}
}
}
Run Code Online (Sandbox Code Playgroud)
它似乎相当简单,但我很难测试它.以下是基于Jest的测试脚本的注释版本:
it ('authFlow() should work with successful login and then successful …
Run Code Online (Sandbox Code Playgroud) 根据此处的文档:\n https://docs.docker.com/storage/volumes/
\n\n\n\n\n如果启动一个创建新卷的容器,如上所述,并且该容器在要挂载的目录(例如上面的/app/)中有文件或目录,则目录\xe2\x80\x99s内容将被复制到该卷中。然后容器安装并使用该卷,并且使用该卷的其他容器也可以访问预先填充的内容。
\n
换句话说,期望是,如果我在 /var/lib/mysql 中有这样的文件
\n\nroot@d8fa9a8b305a:/var/lib/mysql# ls\nauto.cnf xtz ib_logfile0 ibdata1 mysql sys\ndebian-5.7.flag ib_buffer_pool ib_logfile1 ibtmp1 performance_schema\n
Run Code Online (Sandbox Code Playgroud)\n\n然后,当我将卷装入时,/var/lib/mysql
容器中的所有文件都应复制到我的卷中。
但我发现这并没有发生:
\n\n/var/lib/mysql/mysql # ls\nauto.cnf ib_buffer_pool ib_logfile0 ib_logfile1 ibdata1\n
Run Code Online (Sandbox Code Playgroud)\n\n这是我挂载到 /var/lib/mysql 的卷的内容,正如您所看到的,该数据与 docker 映像本身的 /var/lib/mysql 中存在的数据不同。因此,结果是启动失败。
\n\n注意:有问题的卷实际上是由 kubernetes 挂载的。所以,我在这里做出一个主要假设
\n\nvolumeMounts:\n - name: xtz-persistent-storage\n mountPath: "/var/lib/mysql/"\n
Run Code Online (Sandbox Code Playgroud)\n\n相当于这样做:docker run -p 443:443 --rm -v mysql:/var/lib/mysql <image>
我想在没有单击和拖动的情况下重新创建 Three.js OrbitControl 运动,即简单地使相机跟随鼠标移动。
我试图从头开始重新创建它,但是太费力了,因为问题是相机在三个轴上移动,而不仅仅是两个。我很确定有些人以前做过。
具体来说,我希望相机围绕场景原点移动,并与它保持相同的距离。
我正在尝试创建两个部署,一个用于 Wordpress,另一个用于 MySQL,它们指的是两个不同的持久卷。
有时,在删除和重新创建卷和部署时,MySQL 部署会填充 Wordpress 卷(以wordpress-volume
目录中的数据库结束)。
当你这样做时,这会更清楚kubectl get pv --namespace my-namespace
:
mysql-volume 2Gi RWO Retain Bound flashart-it/wordpress-volume-claim manual 1h
wordpress-volume 2Gi RWO Retain Bound flashart-it/mysql-volume-claim manual
Run Code Online (Sandbox Code Playgroud)
.
我很确定设置没问题。请在下面找到 yaml 文件。
kind: PersistentVolume
apiVersion: v1
metadata:
namespace: my-namespace
name: mysql-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /path/to/mount/mysql-volume
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
namespace: my-namespace
name: mysql-volume-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources: …
Run Code Online (Sandbox Code Playgroud) persistent-storage docker kubernetes persistent-volume-claims
我有一个 Rails 应用程序,我想使用 Capistrano 部署两个版本:production
和staging
.
在我的 deploy.rb 文件中,我有:
set :stages, ['staging', 'production']
那么如何在不覆盖它们的情况下使用两条路径?
set :deploy_to, '/home/deploy/Sites/staging/myname'
set :deploy_to, '/home/deploy/Sites/production/myname'
我看过这个答案,但我想保持命令行干净。
kubernetes ×4
docker ×3
javascript ×2
jestjs ×2
mysql ×2
reactjs ×2
unit-testing ×2
api ×1
axios ×1
capistrano3 ×1
deployment ×1
enzyme ×1
graphql ×1
gsap ×1
redux ×1
redux-saga ×1
shopify ×1
testing ×1
three.js ×1