我正在使用 Java,并使用 AWS SDK 与 S3 进行交互。我有以下方法,我想对其进行单元测试
private final S3Client s3Client;
...
...
public byte[] download(String key) throws IOException {
GetObjectRequest getObjectRequest = GetObjectRequest.builder()
.bucket("myBucket")
.key(key)
.build();
return s3Client.getObject(getObjectRequest).readAllBytes();
}
Run Code Online (Sandbox Code Playgroud)
为此,我使用 JUnit 5 和 Mockito。问题是我不知道如何模拟结果
s3Client.getObject(getObjectRequest)
Run Code Online (Sandbox Code Playgroud)
因为返回类型
ResponseInputStream<GetObjectResponse>
Run Code Online (Sandbox Code Playgroud)
是最后一堂课。
有什么想法或建议吗?谢谢
我将 angular 9 与 Angular Material 一起使用,并且通过实现 ControlValueAccessor 接口有一个自定义控件。一切正常。
当表单无效时,在我所有的提交按钮中,我调用 formGroup.markAllAsTouched 因为所有的角度材料字段都变为红色。通过这种方式,用户可以更好地了解哪些控件无效。
我需要用我的自定义控件实现相同的行为。怎么做?
我创建了一个 stackblitz 项目,以便更好地了解这里的情况
我用各种框架(jsf,Spring,Hibernate)编写了一个web应用程序,我的logger库是Logback和slf4j.
目前我无法在日志文件中显示未捕获的异常(例如NullPointers).
这是我的logBack.xml
<configuration debug="true">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${CATALINA_HOME}/logs/jsfDemo.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>jsfDemo.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="FILE" />
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我用uc = null执行这几行代码时
public void nullPointerMethod(UserCredential uc){
LOG.debug(">>login(uc)");
if(uc == null){
throw new NullPointerException();
}else{
//do something
}
LOG.debug("<<login(uc)");
}
Run Code Online (Sandbox Code Playgroud)
在logFile我只看到
>>login(uc)
Run Code Online (Sandbox Code Playgroud)
但是我想看看NullPointer的stackTrace.怎么了?
我不明白为什么这段代码工作正常:
<h:link value="Login" rendered="#{sessionBean.userInSessionBean == null}" />
Run Code Online (Sandbox Code Playgroud)
而这段代码不起作用:
<a jsf:rendered="#{sessionBean.userInSessionBean == null}">Login</a>
Run Code Online (Sandbox Code Playgroud) 我正在使用 JSF 2.2 和 Prime Faces 5.3。
我正在尝试创建一个具有动态选项的 html5 组件。目标是创建类似于 f:selectItems 标记的内容
目前我有以下用于 datalist 标签的代码(datalist.xhtml 文件)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns:cc="http://xmlns.jcp.org/jsf/composite">
<cc:interface></cc:interface>
<cc:implementation>
<datalist id="#{cc.attrs.id}">
<cc:insertChildren/>
</datalist>
</cc:implementation>
</html>
Run Code Online (Sandbox Code Playgroud)
以及单个选项的以下内容(option.xhtml 文件)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns:cc="http://xmlns.jcp.org/jsf/composite">
<cc:interface>
<cc:attribute name="value" type="java.lang.String" default=""/>
<cc:attribute name="label" type="java.lang.String" default=""/>
</cc:interface>
<cc:implementation>
<option value="#{cc.attrs.value}" label="#{cc.attrs.label}"/>
</cc:implementation>
</html>
Run Code Online (Sandbox Code Playgroud)
通过这种方法我可以创建这样的东西
<myTag:dataList id="test">
<myTag:option value="1" label="label1"/>
<myTag:option value="2" label="label2"/>
<myTag:option value="3" label="label3"/>
</myTag:dataList>
Run Code Online (Sandbox Code Playgroud)
但我需要一些能让我拥有动态选项列表的东西。我希望编写以下代码(或类似的代码)
<myTag:dataList id="test">
<myTag:options value="#{myBean.myCollection}" var="mySingleObj" itemValue="mySingleObj.value" itemLabel="mySingleObj.label"/>
</myTag:dataList>
Run Code Online (Sandbox Code Playgroud) 我正在使用 Spring Boot 2.1.0 处理一个项目,我遇到了以下情况。
我有以下存储库
@Repository
public interface ActivityRepository extends PagingAndSortingRepository<Activity, Long> {
@Transactional
@Modifying
@Query("") // Imagine a query
void updateBacklogStatusAge();
@Transactional
@Modifying
@Query("QUERY 2") // Imagine a query
void updateNextStatusAge();
@Transactional
@Modifying
@Query("QUERY 3") // Imagine a query
void updateInProgressStatusAge();
}
Run Code Online (Sandbox Code Playgroud)
和以下组件
@Component
public class ColumnAgeJob {
private final ActivityRepository activityRepository;
public ColumnAgeJob(final ActivityRepository pActivityRepository) {
activityRepository = pActivityRepository;
}
@Transactional
public void update() {
activityRepository.updateBacklogStatusAge();
activityRepository.updateNextStatusAge();
activityRepository.updateInProgressStatusAge();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想测试事务注释是否有效。
基本上我的目标是检查在 updateInProgressStatusAge() 调用期间引发的 runtimeException 是否会导致 updateNextStatusAge …
spring spring-transactions spring-data spring-data-jpa spring-boot