小编Vov*_*syk的帖子

我如何模拟@InjectMocks类的方法?

例如我有处理程序:

@Component
public class MyHandler {

  @AutoWired
  private MyDependency myDependency;

  public int someMethod() {
    ...
    return anotherMethod();
  }

  public int anotherMethod() {...}
}
Run Code Online (Sandbox Code Playgroud)

测试它我想写这样的东西:

@RunWith(MockitoJUnitRunner.class}
class MyHandlerTest {

  @InjectMocks
  private MyHandler myHandler;

  @Mock
  private MyDependency myDependency;

  @Test
  public void testSomeMethod() {
    when(myHandler.anotherMethod()).thenReturn(1);
    assertEquals(myHandler.someMethod() == 1);
  }
}
Run Code Online (Sandbox Code Playgroud)

但它实际上anotherMethod()只要我试图模仿它就会调用它.我该怎么做myHandler来嘲笑它的方法?

java unit-testing mocking mockito

48
推荐指数
2
解决办法
3万
查看次数

为什么将 @Repository 放在 Spring Data JPA 接口之上?

我经常看到如下代码:

@Repository
public interface CustomerRepository extends JpaRepository<Customer, Long>
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么我们需要这个@Repository注释?
我明白为什么@Repository存在,以及为什么我们可能需要在某个班级之上。
但是类没有从 Java 的接口继承注解。当然,我可能会错过一些关于 Spring 'magic' 的内容,但默认的 JPA 实现类如下:

@Repository
@Transactional(readOnly = true)
public class SimpleJpaRepository<T, ID> implements JpaRepositoryImplementation<T, ID>
Run Code Online (Sandbox Code Playgroud)

它包含 @Repository自己,那么为什么我们需要在我们的界面上使用它呢?

Spring Data 文档@Repository在相关部分也没有说明任何内容,但是文档其他部分中的一些偶尔示例包含存在的代码片段@Repository,所以也许随着时间的推移发生了一些变化?

java spring jpa spring-data-jpa

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

如何在 Node.js 应用程序中使用 ethers.js Contract.on() 监听来自智能合约的事件?

我正在尝试在 node.js 应用程序中使用 ethers.js (不是 web3)监听 USDT 合约 Transfer 函数发出的事件。

当我运行脚本时,代码运行没有错误,然后快速退出。我希望获得事件日志。我不确定我错过了哪一步。

我通过调用 getOwner() 方法并控制台记录结果来测试此脚本,这工作正常,所以我与主网的连接正常。

我正在使用炼金术网络套接字。

我的index.js 文件

const hre = require("hardhat");
const ethers = require('ethers');
const USDT_ABI = require('../abis/USDT_ABI.json')

async function main() {

const usdt = "0xdAC17F958D2ee523a2206206994597C13D831ec7";
const provider = new ethers.providers.WebSocketProvider("wss://eth-mainnet.ws.alchemyapi.io/v2/MY_API");
const contract = new ethers.Contract(usdt, USDT_ABI, provider)

contract.on('Transfer', (from, to, value) => console.log(from, to, value))

}

main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error);
    process.exit(1);
  });
Run Code Online (Sandbox Code Playgroud)

我的 Hardhat.config.js 文件


    require("@nomiclabs/hardhat-waffle");
require('dotenv').config()

// This is a sample Hardhat task. …
Run Code Online (Sandbox Code Playgroud)

javascript node.js ethers.js hardhat

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

如何使用 liquibase 创建分区表

我可以创建分区表,如:

CREATE TABLE person(
    id INT NOT NULL,
    NAME VARCHAR(30),
    borned TIMESTAMP)
PARTITION BY RANGE (UNIX_TIMESTAMP(borned)) (
    PARTITION p0 VALUES LESS THAN (UNIX_TIMESTAMP('2000-01-01 00:00:00')),
    PARTITION p1 VALUES LESS THAN (MAXVALUE));
Run Code Online (Sandbox Code Playgroud)

使用 liquibase 标签?我的意思不是用习惯<sql>而是用<createTable>

mysql liquibase

4
推荐指数
2
解决办法
4358
查看次数

我可以使用注释将原始变量注入模拟类吗?

例如我有处理程序:

@Component
public class MyHandler {

  @AutoWired
  private MyDependency myDependency;

  @Value("${some.count}")
  private int someCount;

  public int someMethod(){
    if (someCount > 2) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

测试它我写了以下测试:

@RunWith(MockitoJUnitRunner.class}
class MyHandlerTest {

  @InjectMocks
  MyHandler myHandler;

  @Mock
  MyDependency myDependency;

  @Test
  public void testSomeMethod(){
    ReflectionTestUtils.setField(myHandler, "someCount", 4);
    myHandler.someMethod();
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用模拟变量some​​Count ReflectionTestUtils.我能以某种方式使用Mockito注释来模拟它吗?

java spring unit-testing mocking mockito

3
推荐指数
2
解决办法
4591
查看次数