小编fzz*_*fzz的帖子

以编程方式跳过Spock中的测试

如何以编程方式跳过Spock框架中的测试?我知道我可以@Ignore跳过它来注释测试,或者@IgnoreIf用来跳过基于环境变量等的测试.但有没有办法运行任意代码来决定是否应该运行测试?

例如,假设我有一个必须连接到第三方服务的沙箱环境的集成测试.服务的沙箱环境中断导致测试失败.假设我编写了一个canConnectToService检查测试是否能够连接到此服务的方法,如何canConnectToService()返回false时如何编写将被跳过的测试?

spock

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

Ruby private attr_accessor和意外的nil

当我经常使用Ruby时,我养成了将所有内容都公开并忽视隐私的坏习惯.不幸的是,这种无知又回来困扰着我.这是我的问题的一个更简单的版本:

class Something
    private
    attr_accessor :sneaky
    public

    def initialize
        @sneaky = 0
    end

    def test
        while sneaky < 10
            puts "#{sneaky}"
            sneaky = (sneaky + 1)
        end
    end
end

test = Something.new
test.test
Run Code Online (Sandbox Code Playgroud)

这会输出sneaky(0)的正确值,然后输出错误sneaky = (sneaky + 1),说sneakynil:

0
test.rb:13:in `test': undefined method `+' for nil:NilClass (NoMethodError)
    from test.rb:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)

那是怎么回事?@sneaky在构造函数中被设置为0.如果它真的是零,那不应该puts打印一个空行而不是一个0

编辑:是的,替换sneaky = (sneaky + 1)self.sneaky = sneaky + 1解决问题,即使self.sneaky=看起来像隐私侵犯,因为它有一个明确的接收器.显然,对于setter来说是一个例外.但与隐私的奇怪互动意味着你不能说 …

ruby

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

标签 统计

ruby ×1

spock ×1