小编akh*_*khl的帖子

从Dockerfile写入docker卷不起作用

请考虑以下Dockerfile:

FROM phusion/baseimage
VOLUME ["/data"]
RUN touch /data/HELLO
RUN ls -ls /data
Run Code Online (Sandbox Code Playgroud)

问题:"/ data"目录不包含"HELLO"文件.此外,任何其他尝试写入卷目录(通过echo,mv,cp,...)都是不成功的 - 该目录始终为空.没有显示错误消息.

关于这个问题,我在文档或stackoverflow上找不到任何内容.

这是众所周知的还是新的?

docker version 收益:

Client version: 1.2.0
Client API version: 1.14
Go version (client): go1.3.1
Git commit (client): fa7b24f
OS/Arch (client): linux/amd64
Server version: 1.2.0
Server API version: 1.14
Go version (server): go1.3.1
Git commit (server): fa7b24f
Run Code Online (Sandbox Code Playgroud)

volume docker

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

Spock:用varargs模拟一个方法

这个问题是这个Q&A的一个分支:使用System.console()的Test Groovy类

问题:

Spock框架错误地使用varargs检查模拟方法的参数.

重现步骤:

1)创建groovy项目

2)创建一个界面:

interface IConsole {
  String readLine(String fmt, Object ... args)
}
Run Code Online (Sandbox Code Playgroud)

3)创建spock测试:

class TestInputMethods extends Specification {

  def 'test console input'() {
    setup:
    def consoleMock = GroovyMock(IConsole)
    1 * consoleMock.readLine(_) >> 'validResponse'

    when:
    // here we get exception "wrong number of arguments":
    def testResult = consoleMock.readLine('testPrompt')

    then:
    testResult == 'validResponse'
  }
}
Run Code Online (Sandbox Code Playgroud)

4)尝试运行测试

效果:测试失败,异常"参数数量错误".

解决方法:

对readLine的调用替换为:

def testResult = consoleMock.readLine('testPrompt', [] as Object[])
Run Code Online (Sandbox Code Playgroud)

然后测试成功完成.

题:

有没有更好的方法来"解释"spock,模拟函数的最后一个参数是vararg,因此,它可以省略?

groovy unit-testing mocking spock

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

标签 统计

docker ×1

groovy ×1

mocking ×1

spock ×1

unit-testing ×1

volume ×1