小编J. *_*dam的帖子

Lateinit 属性模拟对象尚未初始化

我正在尝试使用注释 @MockBean 初始化(通过模拟)两个对象

似乎只有当我调用方法模拟(className)时才有效,但由于我想在多个方法上使用模拟类,所以我不想在测试方法中继续重复相同的代码。

这是我的测试课:

@RunWith(MockitoJUnitRunner::class)
class WordServiceTest {

    @MockBean
    lateinit var wordRepositoryMock: WordRepository

    @MockBean
    private lateinit var wordMapperMock: WordMapper

    @Test
    fun findAllTest() {
        // Error: lateinit property wordRepositoryMock has not been initialized
        val wordService = WordService(wordRepositoryMock, wordMapperMock)
        `when`(wordRepositoryMock.findAll()).thenReturn(listOf(
                WordEntity(UUID.randomUUID(), "xxx"),
                WordEntity(UUID.randomUUID(), "xxx")))
        assertEquals(2, wordService.findAll().size)
    }

    @Test
    fun wordExistsTest() {
        // This works fine
        val wordRepositoryMock = mock(WordRepository::class.java)
        val wordMapperMock = mock(WordMapper::class.java)
        val wordService = WordService(wordRepositoryMock, wordMapperMock)
        val word = "xxx"
        `when`(wordRepositoryMock.existsWordEntityByName(word)).thenReturn(true)
        assertEquals(true, wordService.wordExists(word))
    }
}
Run Code Online (Sandbox Code Playgroud)

我不想使用 Spring Boot @Autowired …

java testing unit-testing mocking kotlin

19
推荐指数
3
解决办法
4万
查看次数

React已经渲染时无法刷新更新

我试图在API返回错误时显示警报。对于警报窗口,我正在使用sweetalert2。在我的渲染方法中,我正在检查错误消息是否包含内容。如果包含错误消息,我想向用户显示警报。

提交表单时,我会进行API调用。如果返回错误,则reducer更改存储(状态),并再次呈现页面。

由于我添加了以下行,因此我不断收到错误消息:

{saveLabelFetchError && this.toggleAlertFailure(saveLabelFetchError)}
Run Code Online (Sandbox Code Playgroud)

错误:

index.js:1375警告:unable_flushDiscreteUpdates:React已经渲染时无法刷新更新。

我的组件:

{saveLabelFetchError && this.toggleAlertFailure(saveLabelFetchError)}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我总是在控制台中收到此错误消息。

javascript reactjs sweetalert

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

如何使这个复杂的if-else语句在Kotlin中可维护

我编写了一个函数,用于根据requestparams从数据库中获取信息。以下if-else语句是一个巨大的问题。如果我们继续添加更多过滤器,则需要继续为所有可能的路径添加语句。

    fun getMessages(name: String, pageable: Pageable, locale: String?, subject: String?,
                              recipient: String?): Page<MessageDTO>? {

        val messagePageable= if (!locale.isNullOrEmpty() && !subject.isNullOrEmpty() && !recipient.isNullOrEmpty()) {
            messageRepository.findAll(where(hasMessageName(name).and(hasLocale(locale!!)
            .and(hasSubject(subject!!).and(hasRecipient(recipient!!))))), pageable)
        } else if (!locale.isNullOrEmpty()) {
            messageRepository.findAll(where(hasMessageName(name).and(hasLocale(locale!!))), pageable)
        } else if (!subject.isNullOrEmpty()) {
            messageRepository.findAll(where(hasMessageName(name).and(hasSubject(subject!!))), pageable)
        } else {
            messageRepository.findAll(where(hasMessageName(name)), pageable)
        }
        return messagePageable.map { messageMapper.toMessageDTO(it) }.takeIf { it.content.isNotEmpty() }
}
Run Code Online (Sandbox Code Playgroud)

应该有一个更好的书面方式。我感谢您的帮助。

java if-statement simplify kotlin

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

在PL / SQL变量中循环不是游标

我正在尝试运行以下循环:

DECLARE
v_banknumber varchar2(9) := '123456789';
v_counter number := 9;
v_result number;
begin
for i in v_banknumber 
loop
    v_result := v_counter * TO_NUMBER(i) + v_result;
    v_counter := v_counter - 1;
 end loop;
 end;
Run Code Online (Sandbox Code Playgroud)

我在第2行出现错误:

Error report -
ORA-06550: line 6, column 10:
PLS-00456: item 'V_BANKNUMBER' is not a cursor
ORA-06550: line 6, column 1:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
Run Code Online (Sandbox Code Playgroud)

如果我读得很好,似乎应该可以。在座的任何人都可以解释我为什么不起作用?

必须将第一个数字乘以9,第二个数字乘以8,第三个数字乘以7,依此类推,并将其总和保存在结果变量中。

oracle plsql

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

如何在我的 kafka 消费者中使用对象反序列化 json 列表?

我的 Kafka Producer 正在发送 Json 格式的对象列表。

我试图弄清楚如何让我的消费者反序列化列表。我能够接收单个对象并读取它,但是当我将代码更改为类型 List 时,我收到以下错误:

Error:(32, 47) java: incompatible types: cannot infer type arguments for org.springframework.kafka.core.DefaultKafkaConsumerFactory<>
    reason: inference variable V has incompatible equality constraints java.util.List<nl.domain.X>,nl.domain.X
Run Code Online (Sandbox Code Playgroud)

编辑

通过将 TypeReference 添加到 JsonDeserilizer 已解决此错误。

当前问题

消费消息时,它不是我定义的类型(即 List< X > ),而是返回LinkedHashMap

这是消费者配置:

@EnableKafka
@Configuration
public class KafkaConfiguration {

    @Bean
    public ConsumerFactory<String, List<X>> xConsumerFactory() {
        Map<String, Object> config = new HashMap<>();

        config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
        config.put(ConsumerConfig.GROUP_ID_CONFIG, "group_json");
        config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
        return new DefaultKafkaConsumerFactory<>(config, new StringDeserializer(),
                new JsonDeserializer<>(new TypeReference<List<X>>() …
Run Code Online (Sandbox Code Playgroud)

java spring apache-kafka json-deserialization spring-kafka

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

Oracle 从多个表中删除行

我正在尝试从多个表中删除行,但在 medewerkers m 中出现语法错误,

谁能告诉我我在这里做错了什么?:

declare
v_mnr medewerkers.mnr%type;
procedure ontsla_med(p_mnr in medewerkers.mnr%type)
IS
BEGIN
    DELETE FROM medewerkers m, INSCHRIJVINGEN i , UITVOERINGEN u WHERE m.MNR = p_mnr and i.cursus = p_mnr and u.docent = p_mnr;
END ontsla_med;
BEGIN
    ontsla_med(7000);
END;
Run Code Online (Sandbox Code Playgroud)

好像删除语句是错误的?

sql oracle plsql

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

为什么我在select语句中得到超过1行?

我有一张桌子:

表:Berichten列:ID,Bericht,Bericht,Klant_ID,Product_ID,Datum

我在其中有一行,并希望用与列中相同的klant_id向用户显示它,当我运行以下语句时,我得到10行

 select 
    b.ID,
    b.Product_id ,
    b.Klant_id,
    b.onderwerp
 from BERICHTEN b, KLANTEN k 
 WHERE b.klant_id = (select ID from klanten where email = 'joris@am.nl')
Run Code Online (Sandbox Code Playgroud)

知道我为什么得到10行而不是1行?

sql oracle

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