小编jmc*_*n92的帖子

什么时候我们应该使用.then和Protractor Promise?

我和Protractor有很多不稳定因素,我确信有些东西我不明白.有时我需要在继续之前单击按钮时使用.then(),有时它没有任何影响,我不应该使用.then()或测试失败.

我想知道在Protractor中测试时我应该何时使用.then()回调?示例:

createAccountForm = $('#form-create-account');
submitButton = createAccountForm.$('button[type=submit]');

browser.wait(EC.elementToBeClickable(submitButton), 5000);
submitButton.click(); // .then(function(){   <-- uncomment in the .then form

// find the confirmation message
var message = $('.alert-success');
browser.wait(EC.visibilityOf(message), 5000);
log.debug('After visibilityOf');

expect(message.isPresent()).to.be.eventually.true;
// }); --> uncomment when in .then form
Run Code Online (Sandbox Code Playgroud)

当我使用这种形式的测试(没有.then())时,我在浏览器上看到点击按钮没有完成,测试继续以下期望然后停止.

如果我使用.then()表单,则单击按钮即可完成,测试将继续,不会出现错误.

在其他测试中,单击按钮时我不需要使用then()回调.

那么,我什么时候应该使用.then(),什么时候不使用?

让 - 马克

promise protractor

35
推荐指数
1
解决办法
3万
查看次数

如何获得量角器可靠的结果?

我正在使用Protractor(v 1.3.1)为我的Angular 1.2.26应用程序运行E2E测试.

但有时,测试是可以的,有时候不是.似乎有时检查是在显示更新之前完成的(或类似"同步"问题).我尝试了很多选择:

  • 添加browser.driver.sleep说明,
  • 禁用效果 browser.executeScript('$.fx.off = true')
  • 添加browser.waitForAngular()说明

没有成功.

使用量角器重新进行E2E测试的最佳做法是什么?

JM.

javascript testing angularjs selenium-webdriver protractor

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

Logstash使用mutate.add_field创建一个嵌套字段

我想在Logstash过滤器中制作一个嵌套字段的副本,但我无法弄清楚正确的语法.这是我尝试的:

语法错误:

mutate {
    add_field => { "received_from" => %{beat.hostname} }
}
Run Code Online (Sandbox Code Playgroud)

beat.hostname未被替换

mutate {
    add_field => { "received_from" => "%{beat.hostname}" }
}
Run Code Online (Sandbox Code Playgroud)

beat.hostname未被替换

mutate {
    add_field => { "received_from" => "%{[beat][hostname]}" }
}
Run Code Online (Sandbox Code Playgroud)

beat.hostname未被替换

mutate {
    add_field => { "received_from" => "%[beat][hostname]" }
}
Run Code Online (Sandbox Code Playgroud)

没门.如果我给出一个非嵌套字段,它按预期工作.

logstash收到的数据结构如下:

{
       "@timestamp" => "2016-08-24T13:01:28.369Z",
             "beat" => {
                "hostname" => "etg-dbs-master-tmp",
                "name" => "etg-dbs-master-tmp"
    },
            "count" => 1,
               "fs" => {
        "device_name" => "/dev/vdb",
              "total" => 5150212096,
               "used" => 99287040,
             "used_p" => 0.02,
               "free" …
Run Code Online (Sandbox Code Playgroud)

logstash

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

CDI注射循环

我在JBoss 7.1.1中遇到了CDI Injection进入Weld容器的问题

我有以下对象模型:

@Stateless
class ServiceEjb {
@Inject
A a;
}

class A {
@Inject
B b;
}

class B {
@Inject
A a;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在我的无状态类中注入A或B时,注入循环并使用javax.enterprise.inject.CreationException崩溃.

我尝试了很多东西(范围,@ Singleton在A或B但没有成功).我不想打破代码,那些注射让人感觉到了.

任何线索将不胜感激.

dependency-injection circular-dependency cdi jboss-weld

5
推荐指数
2
解决办法
5139
查看次数

Jq无法解析MongoDB输出文件

Jq是一个很好的工具来处理bash中的JS文档.但由于Mongodb添加的功能,我不能用来解析一些MongoDB输出文件.MongoDB Json返回的示例:

{
    "_id" : "example",
    "version" : 23,
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.0.1:27017",
            "slaveDelay" : NumberLong(0),   <---- Here jq failed to parse this line
            "votes" : 1
        }
]}
Run Code Online (Sandbox Code Playgroud)

jq给出的错误是:

parse error: Invalid numeric literal at line 15, column 32
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

json mongodb jq

5
推荐指数
3
解决办法
2750
查看次数

Kustomize 如何只替换 Ingress 配置中的主机

我有这个 ingress.yaml 基本配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    sia: aza
    app: asap-ingress-internal
  name: asap-ingress-internal
  annotations:
    kubernetes.io/ingress.class: "nginx-external"
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: the-host-value
      http:
        paths:
          - path: /asap-srv-template/(.*)
            backend:
              serviceName: asap-srv-template
              servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

并且只想替换 spoec.rules.host 值(并保持所有 http.paths 原样。

所以我创建了一个这样的 env-var.yaml :

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: asap-ingress-internal
spec:
  rules:
    - host: the.real.hostname
Run Code Online (Sandbox Code Playgroud)

但结果如下:

$ kustomize build
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx-external
    nginx.ingress.kubernetes.io/use-regex: "true"
  labels:
    app: asap-ingress-internal
    env: dev
    sia: aza
  name: asap-ingress-internal
  namespace: aza-72461-dev …
Run Code Online (Sandbox Code Playgroud)

kubernetes nginx-ingress kustomize

5
推荐指数
2
解决办法
1518
查看次数

Docker挂载目录访问权限

我有一个运行MongoDB数据库的docker容器.为了保持数据的持久性,我在容器上安装了一个卷,该容器是使用xfs格式化的AWS EBS卷(MongoDB建议).

运行命令如下:

$ docker run --name MongoDB -p 27017:27017 --volume /data/mongo/db:/data/db --volume /data/mongo/conf:/data/configdb mongo:3.4 --config /data/configdb/mongodb.conf
Run Code Online (Sandbox Code Playgroud)

但我总是得到以下错误:

chown: cannot read directory '/data/configdb': Permission denied
chown: cannot read directory '/data/db': Permission denied
Run Code Online (Sandbox Code Playgroud)

我在所有/ data/mongo目录和子目录上尝试了很多chmod和chown命令,直到我来到chmod -R 777/data/mongo但不再成功.在mongo Dockerfile上,我看到入口点chown/data/db和/ data/configdb:https://github.com/docker-library/mongo/blob/30d09dbd6343d3cbd1bbea2d6afde49f5d9a9295/3.4/docker-entrypoint.sh

chown -R mongodb /data/configdb /data/db
Run Code Online (Sandbox Code Playgroud)

所以我坚持使用这个目录访问权限.


更多信息.我在AWS,ECS,Centos 7上.

 $ docker info
Containers: 1
 Running: 0
 Paused: 0
 Stopped: 1
Images: 3
Server Version: 1.12.5
Storage Driver: devicemapper
 Pool Name: docker-202:1-86279-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB …
Run Code Online (Sandbox Code Playgroud)

mongodb amazon-web-services docker centos7

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

静脉遗传的静力学方法

我在Node.js应用程序中使用Mongoose,我想使用模型的继承.我遵循这里给出的指令mongoose和其他链接中的继承,但我无法弄清楚如何继承静态方法.

这是我尝试的:

// The BaseSchema class :
function BaseSchema(objectName, schema) {
    log.trace('BaseSchema CTOR : objectName=%s schema=%s', objectName, schema);
    Schema.apply(this, [schema]);

    var _objectName = objectName;
...
}
BaseSchema.prototype = new Schema();
BaseSchema.prototype.constructor = BaseSchema;

// !!! Here I try to expose the removeAll statics methods for all sub-schema !!!
BaseSchema.prototype.removeAll = function() { ... }
Run Code Online (Sandbox Code Playgroud)

这是继承的类

// The inherited class
var AccountSchema = new BaseSchema('account', {
...
}
mongoose.model('Account', AccountSchema);
Run Code Online (Sandbox Code Playgroud)

pb是每次我尝试使用removeAll函数.例如 :

var Account = mongoose.model('Account');
Account.removeAll(function …
Run Code Online (Sandbox Code Playgroud)

inheritance mongoose mongodb node.js

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

如何在Angular中使用CryptoJS

全部都在标题中。我想在AngularJS应用程序中使用CrytoJS库,但我不能摆脱它。

我用bower安装crytoJS:

bower install cryptojslib
Run Code Online (Sandbox Code Playgroud)

然后我加载所需的库:

<script type="text/javascript" src="/public/system/lib/cryptojslib/rollups/md5.js"></script>
<script type="text/javascript" src="/public/system/lib/cryptojslib/components/enc-base64-min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我尝试像这样使用CryptoJS:

var pwd = CryptoJS.MD5(params.email+'|'+params.password).toString(CryptoJS.enc.Base64);
Run Code Online (Sandbox Code Playgroud)

运行此代码时,出现以下错误:

'CryptoJS is not defined'
Run Code Online (Sandbox Code Playgroud)

我读过,应该可以将CryptoJS包装到一个模块中,但是我不知道该怎么做。

任何帮助将不胜感激。

JM。

angularjs cryptojs

3
推荐指数
1
解决办法
2万
查看次数

NodeJS和Express拦截器

我正在尝试为计量目的编码拦截器.我的拦截器必须在任何http查询之前(以及在Express完成其工作之前)调用一些时间信息,并在Express'工作之后调用,以获得调用的持续时间.

我正在尝试使用中间件,它在"之前"调用中工作正常,但不适用于"之后"调用,因为当发现路由时,通过其他中间件的传播被停止.

请提供一些线索,让一些拦截器在所有情况下工作.

编辑:

我想要的是Javascript实际上是一种AOP ......

'之前'拦截器中间件是:

// JMC Add metrologie informations for all route called
    app.use(function (req, res, next) {
        var name = req.originalMethod + req.originalUrl;
        log.trace('Start MetroInfo for route : %s', name);
        metro.startMetrologie(name);
        return next();
    });
Run Code Online (Sandbox Code Playgroud)

提前致谢.

interceptor node.js express

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