Rust 如何捕获NEAR-samart合同日志(env::log)?

Rust 如何捕获NEAR-samart合同日志(env::log)?,rust,nearprotocol,Rust,Nearprotocol,我想在智能合约测试运行时(不是终端)中捕获日志(env::log),并检查输出(在测试函数中)。我该怎么做?此功能尚未发布。下面是将它介绍给near_sdk的PR。假设代码提供了足够的可见性,也许您可以直接获取执行该操作的代码 ///从VMLogic返回日志的副本。仅在单元测试中可用。 发布fn获取日志()->Vec{ 让区块链与U接口= env::take_blockchain_interface().expect(“未设置区块链接口”); let logs=区块链\u接口 .如_mock_b

我想在智能合约测试运行时(不是终端)中捕获日志(
env::log
),并检查输出(在测试函数中)。我该怎么做?

此功能尚未发布。下面是将它介绍给
near_sdk
的PR。假设代码提供了足够的可见性,也许您可以直接获取执行该操作的代码

///从VMLogic返回日志的副本。仅在单元测试中可用。
发布fn获取日志()->Vec{
让区块链与U接口=
env::take_blockchain_interface().expect(“未设置区块链接口”);
let logs=区块链\u接口
.如_mock_blockchain()
.expect(“预期模拟区块链接口”)
.logs();
环境:设置区块链接口(区块链接口);
日志
}

已经有一段时间了,但我不这么认为,不过这里有几个想法:1。记住在运行测试时添加愚蠢的额外标志,这样测试就不会“捕获”输出
货物测试--nocapture
2。你可以
println内部单元测试,它们肯定会出现(如果您使用上面的标志)3。如果这是您真正需要查看
env::log
s的更深层次的内容,我认为单元测试不是最好的方法,您应该使用模拟测试。谢谢,我正在更新文本。我想在测试运行时捕获它,而不是在终端中。