小编Oli*_*haw的帖子

模拟一个依赖的构造函数Jest

我是Jest的新手.我已经设法模仿我自己的东西,但似乎被模仿一个模块.特别是构造者.

usage.js

const AWS = require("aws-sdk")
cw = new AWS.CloudWatch({apiVersion: "2010-08-01"})
...
function myMetrics(params) { 
  cw.putMetricData(params, function(err, data){})
}
Run Code Online (Sandbox Code Playgroud)

我想在测试中做这样的事情.

const AWS = jest.mock("aws-sdk")
class FakeMetrics {
  constructor() {}
  putMetricData(foo,callback) {
    callback(null, "yay!")
  }
}

AWS.CloudWatch = jest.fn( (props) => new FakeMetrics())
Run Code Online (Sandbox Code Playgroud)

但是,当我来usage.jscw 使用它是一个mockConstructor不是FakeMetrics

我意识到我的方法可能"不是惯用的"所以我会对任何指针感到满意.

这是一个最小的例子https://github.com/ollyjshaw/jest_constructor_so

npm install -g jest

jest

javascript node.js ecmascript-6 jestjs aws-sdk

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

Docker链接到以前启动的容器

我想进行docker-compose run一次针对一些先前开始的容器运行.我的docker-compose.yml文件将如下所示:

one_shot_service:
 ...
  links:
    - long_running_service:docker
long_running_service:
  ...
Run Code Online (Sandbox Code Playgroud)

我的工作流程是:

  1. 启动长期运行的服务 docker-compose up long_running_service
  2. 多次运行一次性服务. docker-compose run --no-deps one_shot_service

当我这样做时,它上面的/etc/hosts文件one_shot_service不包含docker的条目.当我在没有--no-deps它的情况下运行时很好.我不想没有运行的原因no-deps是因为long_running_service需要很长时间才能启动.

长话短说,如何链接到现有容器?

docker docker-compose

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

带有byte []的Grails脚手架404

我正在尝试上传grails文件.生成的脚手架不能为我工作,给我一个404寻找'save.jsp'

class Simple{
  byte [] avatar

  static constraints = {
    avatar nullable: true, maxSize: 1000000
  }
}
Run Code Online (Sandbox Code Playgroud)

调节器

class SimpleController{
  def scaffold = Simple
  //or
  static scaffold = Simple
}
Run Code Online (Sandbox Code Playgroud)

这个问题之前已经出现过,并且在http://jira.grails.org/browse/GPSCAFFOLD-69已被标记为已解决,但我在mac OSX上遇到grails 2.3.6的问题.

我在这里错过了什么吗?

grails groovy scaffold

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

pipfile 可编辑包位置

我可以按照此处的说明将我正在处理的源文件安装到可编辑的包目录中。

所以我的 Pipenv 看起来像

[dev-packages]
pytest = "*"
my-package= {editable = true, path = "."}
Run Code Online (Sandbox Code Playgroud)

这让我可以运行

pipenv install --dev
Run Code Online (Sandbox Code Playgroud)

然后

pytest
Run Code Online (Sandbox Code Playgroud)

去测试。

可以把我的包裹放进去吗./src?我已经尝试过,但被告知路径无效。

ValueError: Invalid path './src'
Run Code Online (Sandbox Code Playgroud)

*经过Carlo的回答+hoefling的改进这是一个验证Carlo的答案的项目 https://github.com/ollyjshaw/alan_pytridge/

python pytest python-3.x pipenv

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

对象扩展Scala特征.Ruby相当于?

在Scala中,我可以编写一个实现特征的单例对象.

trait Greeter {
  def greet = "Hello"
}
object MyGreeterObject extends Greeter
Run Code Online (Sandbox Code Playgroud)

然后我可以很容易地在我的测试中模拟Greeter

var mockGreeter = new Greeter { 
  override def greet = "I'm a mock"
}
Run Code Online (Sandbox Code Playgroud)

在Ruby中有没有相同的方法呢?最终,我希望能够模拟一些不需要状态的方法,并且最好通过对象级方法提供(在Scala中).一旦我拥有了这个,我希望能够为我的测试进行模拟.

ruby scala traits

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

Vert.x异步测试

我是vert.x的新手.我正在尝试运行一些基本测试和基准测试等来评估框架(所以我可能做错了很多!)

我感兴趣的一件事是运行'控制器'级别测试的性能成本.我设置了一个应该反复旋转并拆除httpclient的测试.

@Repeat(100)
@Test
public void testMyApplication(TestContext context) {

    final Async async = context.async(1);
    vertx.createHttpClient().getNow(8080, "localhost", "/",
            response -> {
                response.handler(body -> {
                    context.assertTrue(body.toString().contains("Hello"));
                    context.assertEquals(200, response.statusCode());
                    async.complete();
                });
            });
    async.awaitSuccess();
}
Run Code Online (Sandbox Code Playgroud)

然而,这偶尔会失败.

SEVERE: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:8080
Run Code Online (Sandbox Code Playgroud)

什么是更好的方法来启动多个客户端并确保测试按顺序运行或具有一些受控制的并行性?

java vert.x

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