小编rad*_*dio的帖子

spock单元测试循环在then子句中

我在then子句中有一个带循环的测试:

result.each {
  it.name.contains("foo")
  it.entity.subEntity == "bar"
}

for (String obj : result2) {
  obj.name.contains("foo")
  obj.entity.subEntity == "bar"
}
Run Code Online (Sandbox Code Playgroud)

最近我意识到循环没有真正测试过.无论我是否有foo或bar或其他任何东西,测试总是绿色的:)我发现,循环必须以不同的方式进行测试,例如使用'every'?但只是将'each'更改为'every'抛出异常:

result.every {
  it.name.contains("foo")
  it.entity.subEntity == "bar"
}

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Spec expression: 1: expecting '}', found '==' @ line 1, column 61.
   s("foo") it.entity.rootEntity == "bar" }
Run Code Online (Sandbox Code Playgroud)

我应该如何在测试中正确使用循环?我正在使用spock 0.7-groovy-2.0

testing loops clause spock

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

使用@RestClientTest对rest客户端进行Spring启动测试

我正在使用spring boot 1.5.8并想测试我的客户端:

@Component
public class RestClientBean implements RestClient {
  private Map<String, RestTemplate> restTemplates = new HashMap<>();

  @Autowired
  public RestClientBean(RestTemplateBuilder builder, SomeConfig conf) {
    restTemplates.put("first", builder.rootUri("first").build();
    restTemplates.put("second", builder.rootUri("second").build();
  }
}
Run Code Online (Sandbox Code Playgroud)

通过以下测试:

@RunWith(SpringRunner.class)
@RestClientTest(RestClient.class)
public class RestClientTest {
  @Autowired
  private RestClient client;

  @Autowired
  private MockRestServiceServer server;

  @TestConfiguration
  static class SomeConfigFooBarBuzz {
    @Bean
    public SomeConfig provideConfig() {
        return new SomeConfig(); // btw. not sure why this works, 
                                 // but this is the only way 
                                 // I got rid of the "unable to …
Run Code Online (Sandbox Code Playgroud)

java resttemplate spring-boot-test mockrestserviceserver

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

删除索引或约束而不知道Oracle的名称

在oracle数据库上,我有一个外键,不知道它的名字,只有column_name和reference_column_name.我想写一个sql脚本,如果它存在,应该删除这个外键,所以这是我使用的代码:

declare
 fName varchar2(255 char);
begin
 SELECT x.constraint_name into fName FROM all_constraints x
 JOIN all_cons_columns c ON
 c.table_name = x.table_name AND c.constraint_name = x.constraint_name
 WHERE x.table_name = 'MY_TABLE_NAME' AND x.constraint_type = 'R' AND c.column_name ='MY_COLUMN_NAME';
end;
Run Code Online (Sandbox Code Playgroud)

这个脚本的输出是"匿名块完成",所以它很成功,但是当我添加drop部分时:

declare
 fName varchar2(255 char);
begin
 SELECT x.constraint_name into fName FROM all_constraints x
 JOIN all_cons_columns c ON
 c.table_name = x.table_name AND c.constraint_name = x.constraint_name
 WHERE x.table_name = 'MY_TABLE_NAME' AND x.constraint_type = 'R' AND c.column_name ='MY_COLUMN_NAME';
 if (fName != '') THEN
  alter table MY_TABLE_NAME drop …
Run Code Online (Sandbox Code Playgroud)

sql oracle constraints sql-drop

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

prometheus 循环遍历范围或即时向量的值并应用函数

假设我有一个返回范围或即时向量的 promQL:范围向量 ->metric[1h]或实例向量 ->increase(metric[1h])

有没有办法将范围转换为即时向量和/或反之亦然?因为许多数学运算/函数只能在即时向量上进行。

如果无法进行转换,有没有办法对范围向量的每个值应用某个操作或函数?例如(值的平方):

(7 @1554105600, 5 @1554710400, 2 @1555315200, 12 @1555920000) 变成

(49 @1554105600, 25 @1554710400, 4 @1555315200, 144 @1555920000)

loops function operators prometheus promql

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

选择返回时没有oracle select into变量?

declare
 fName varchar2(255 char);
begin
 SELECT x.constraint_name into fName FROM all_constraints x
 JOIN all_cons_columns c ON
 c.table_name = x.table_name AND c.constraint_name = x.constraint_name
 WHERE x.table_name = 'MY_TABLE_NAME' AND x.constraint_type = 'R' AND c.column_name ='MY_COLUMN_NAME';
 if fName is not null THEN
  execute immediate 'alter table MY_TABLE_NAME drop constraint ' || fName;
 end if;

 SELECT x.constraint_name into fName FROM all_constraints x
 JOIN all_cons_columns c ON
 c.table_name = x.table_name AND c.constraint_name = x.constraint_name
 WHERE x.table_name = 'OTHER_MY_TABLE_NAME' AND x.constraint_type = 'R' AND c.column_name …
Run Code Online (Sandbox Code Playgroud)

oracle select exception

4
推荐指数
2
解决办法
8428
查看次数

普罗米修斯过滤器范围向量(按day_of_week)

我使用子查询来获取上周每小时的聚合值,例如:上周整周每小时的 http 请求数,它将返回范围向量中的 168 个值。

delta(http_server_requests_seconds_count[1h])[1w:1h]
Run Code Online (Sandbox Code Playgroud)

现在我想过滤该值以仅返回特定工作日的值,假设仅返回星期一的 24 值。我发现了一些关于 day_of_week、timestamp、bool expr 的提示,但我无法将它们组合起来使其正常工作,或者也许这是不可能的?就像是:

delta(http_server_requests_seconds_count[1h])[1w:1h] bool day_of_week() == 1
Run Code Online (Sandbox Code Playgroud)

filter dayofweek prometheus promql

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

带继承的Java Builder模式

我想实现一个带有静态内部类的构建器模式,比如说类A带有字段(a1,a2,a3),B带有字段(b1,b2),C带有字段(c1),而所有共享字段(s1,s2) )来自超级SuperClass:

public class A extends SuperClass {
    private final String a1;
    ...

    private A(ABuilder builder) {
        super(builder);
        this.a1 = builder.a1;
        ...
    }

    public static class ABuilder extends SuperClassBuilder implements ABuilderInterface {
        private String a1;
        ...

        @Override
        public ABuilder withA1(String a1) {
            this.a1 = a1;
            return this;
        }
        ...

        @Override
        public SuperClass build() {
            return new A(this);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,对于B和C,构建器只是不同,它们有自己的字段并实现它们自己的接口(BBuilderInterface和CBuilderInterface),而这些接口只定义要实现的方法:

public interface ABuilderInterface extends SuperClassBuilderInterface {
    ABuilderInterface withA1(String a1);
    ...
}
...<interfaces for B and C>

public interface SuperClassBuilderInterface …
Run Code Online (Sandbox Code Playgroud)

java inheritance design-patterns builder

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