小编A53*_*300的帖子

如何使用私有财产创建Spock Spy

我有以下 Java 类:

public class FooServiceImpl {
    private BarService barService;

    public String generateFoo() {
        String barValue = barService.generateBar();
        return customFoo() + barValue;
    }

    public String customFoo() {
       return "abc";
    }
}
Run Code Online (Sandbox Code Playgroud)

这是示例性的 Spock 测试方法:

def "generate foo bar"() {
    setup:
        def barService = Mock(BarService) {
            generateBar() >> "Bar"
        }
        FooServiceImpl spyFooService = 
          Spy(FooServiceImpl, constructorArgs: [[barService: barService]])

        spyFooService.customFoo() >> "foo"
    when:
        def fooValue = spyFooService.generateFoo()
    then:
        fooValue == "fooBar"
}
Run Code Online (Sandbox Code Playgroud)

我尝试为FooServiceImpl类创建一个 Spy 对象,但出现以下错误:

org.codehaus.groovy.runtime.metaclass.MissingPropertyExceptionNoStack: 
No such property: barService for …
Run Code Online (Sandbox Code Playgroud)

java groovy spock

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

执行多个反应操作的正确方法

我从反应式存储库中获取Mono<FooBar>基于它的值,我必须创建另外两个对象,使用反应式存储库保存它们,修改FooBar对象并保存它。

由于我是反应式编程的新手,我使用了以下解决方案,该解决方案有效,但我不确定我是否正确使用了反应式 API:

@Test
void createAndSave() {
    Mono<FooBar> fooBarMono = findFooBar()  // returns Mono<FooBar>
            .map(fooBar -> {
        createAndSaveLoremBar(fooBar).subscribe();   // returns Mono<LoremBar>
        createAndSaveDoloremBar(fooBar).subscribe(); // returns Mono<DoloremBar>

        fooBar.setActive(true);

        return saveFooBar(fooBar);          // returns Mono<FooBar>
    }).flatMap(Function.identity());

    StepVerifier.create(fooBarMono)
            .expectNextMatches(Objects::nonNull)
            .expectComplete()
            .verify();

}
Run Code Online (Sandbox Code Playgroud)

从控制台日志:

   saved lorem bar
   saved dolorem bar
   saved foo bar
Run Code Online (Sandbox Code Playgroud)

spring-webflow spring-data-mongodb project-reactor

5
推荐指数
2
解决办法
5266
查看次数

为什么GraalVM CE的吞吐量比GraalVM EE或OpenJDK 8小

我为使用动态编程找出最长的公共子序列的方法创建了一个基准:

@Benchmark
  def longestCommonSubsequenceDP(): String = {
    val s1 = "Pellentesque lacinia"
    val s2 = "Mauris purus massa"
    val up = 1
    val left = 2
    val charMatched = 3

    val s1Length = s1.length()
    val s2Length = s2.length()

    val lcsLengths = Array.fill[Int](s1Length + 1, s2Length + 1)(0)

    for (i <- 0 until s1Length) {
      for (j <- 0 until s2Length) {
        if (s1.charAt(i) == s2.charAt(j)) {
          lcsLengths(i + 1)(j + 1) = lcsLengths(i)(j) + 1
        } else {
          if (lcsLengths(i)(j …
Run Code Online (Sandbox Code Playgroud)

scala java-8 graalvm

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

poolEnrich是否将整个文件内容加载到内存中?

我有一条简单的路线,例如:

from("direct:fooBar")
 .pollEnrich()
 .simple("file:in/?fileName=abc.txt")
 .process(exchange -> {
          // 1
          exchange.getIn().getBody(String.class);
 })
 .split(body().tokenize("\n")).streaming().stopOnException()
 .process(exchange -> {
          // 2
          exchange.getIn().getBody(String.class);
  })
Run Code Online (Sandbox Code Playgroud)

abc.txt这是一个非常大的文件,因此我正在使用splitstreaming减少内存开销。但是我可以抓取文件的内容1,因此我猜想使用时整个内容实际上都已加载到了内存中poolEnrich

我的假设正确吗?

apache-camel

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