我是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.js
cw 使用它是一个mockConstructor
不是FakeMetrics
我意识到我的方法可能"不是惯用的"所以我会对任何指针感到满意.
这是一个最小的例子https://github.com/ollyjshaw/jest_constructor_so
npm install -g jest
jest
我想进行docker-compose run
一次针对一些先前开始的容器运行.我的docker-compose.yml文件将如下所示:
one_shot_service:
...
links:
- long_running_service:docker
long_running_service:
...
Run Code Online (Sandbox Code Playgroud)
我的工作流程是:
docker-compose up long_running_service
docker-compose run --no-deps one_shot_service
当我这样做时,它上面的/etc/hosts
文件one_shot_service
不包含docker的条目.当我在没有--no-deps
它的情况下运行时很好.我不想没有运行的原因no-deps
是因为long_running_service
需要很长时间才能启动.
长话短说,如何链接到现有容器?
我正在尝试上传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的问题.
我在这里错过了什么吗?
我可以按照此处的说明将我正在处理的源文件安装到可编辑的包目录中。
所以我的 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/
在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中).一旦我拥有了这个,我希望能够为我的测试进行模拟.
我是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)
什么是更好的方法来启动多个客户端并确保测试按顺序运行或具有一些受控制的并行性?