问题描述
我正在尝试模拟结果为 Mono
的 spring 存储库。当我模拟两个以上的方法时,它会为它们返回相同的结果。如果我模拟仅返回 String
的其他方法,则它可以正常工作。有人能告诉我我在这里做错了什么吗?名称为 testMono
的测试失败,因为结果是 monoonemonoone
但 testSimple
没问题。完整的申请是here。
import static org.hamcrest.MatcherAssert.assertthat;
import static org.hamcrest.Matchers.is;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBoottest;
import com.example.demo.data.repository.DemoRepository;
import com.example.demo.service.TestService;
import mockit.Capturing;
import mockit.Expectations;
import reactor.core.publisher.Mono;
@SpringBoottest
class DemoApplicationTests {
@Autowired
private TestService testService;
@Test
void testMono(@Capturing DemoRepository demoRepository) {
new Expectations() {{
demoRepository.testMethodone();
result = Mono.just("monoone");
demoRepository.testMethodTwo();
result = Mono.just("monotwo");
}};
String result = testService.callMonoMethods();
assertthat(result,is("monoonemonotwo"));
}
@Test
void testSimple(@Capturing DemoRepository demoRepository) {
new Expectations() {{
demoRepository.simpleOne();
result = "simpleone";
demoRepository.simpleTwo();
result = "simpletwo";
}};
String result = testService.callSimpleMethods();
assertthat(result,is("simpleonesimpletwo"));
}
}
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
@Component
public class CustomDemoRepositoryImpl implements CustomDemoRepository {
private static final String ONE = "one";
private static final String TWO = "two";
@Override
public Mono<String> testMethodone() {
return Mono.just(ONE);
}
@Override
public Mono<String> testMethodTwo() {
return Mono.just(TWO);
}
@Override
public String simpleOne() {
return ONE;
}
@Override
public String simpleTwo() {
return TWO;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)