如何在Spring Boot中模拟@Value属性

问题描述 投票:0回答:1

在 SpringBoot 中我有这个服务要测试:

@Service
public class CardService{

    @Value("${max_transactions}")
    private int maxTransactions;
   
    public boolean addTransaction(Transaction transaction){
       if(transaction.value < maxTransactions){
          ...

          return true;
       }
    }

    ...
}

当我对此函数创建单元测试时 maxTransaction = 0 即使 application.properties 中的值不同。

class MatchesServiceImplTest {

    @InjectMocks
    CardService service;

    @Test
    void testAddTransaction(){
      
       Transaction transaction = new Transaction();
       transaction.value = 10;
       
       assertTrue(service.addTransaction(transaction))
    }
}

如何在私有字段中注入application.properties值?

我尝试在网上寻找一些东西,但一无所获, 预先感谢。

spring-boot unit-testing mocking application.properties
1个回答
0
投票

您可以使用@SpringBootTest注释来加载应用程序上下文,并使用@Autowire来注入被测试的类。下面是一个示例,其中 CardService 是正在测试的类。测试配置包括 maxTransactions 的属性设置。

@SpringBootTest(classes = CardService.class, properties = {"maxTransactions=10"})
class MatchesServiceImplTest {

@Autowired
private CardService cardService;

// Test methods go here

}

© www.soinside.com 2019 - 2024. All rights reserved.