例如我有处理程序:
@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来嘲笑它的方法?
我经常看到如下代码:
@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,所以也许随着时间的推移发生了一些变化?
我正在尝试在 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) 我可以创建分区表,如:
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>
例如我有处理程序:
@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)
我可以使用模拟变量someCount ReflectionTestUtils.我能以某种方式使用Mockito注释来模拟它吗?