我正在使用 truffle 来测试一个用 Solidity 编写的合约,它非常简单,我基本上是在学习织机教程(加密僵尸)。
这是我在 createzombie.sol 文件中编写的一个基本函数,
@SpringBootApplication(scanBasePackages = "com.expenses")
这是我用来测试合同的 javascript 文件:
@Autowired
当我在终端中运行 sudo truffle test 时,出现以下错误:
UserServiceImplementation.userRepository
(我确切地说我是一个完整的初学者)
非常感谢您以后的回答!
编辑:另一个可能相关的问题示例,这是一个非常基本的智能合约的另一个示例
@Repository
我知道我使用 uint 作为名称而不是 Bytes32 或字符串,使用 javascript 时更容易,我只想测试简单的代码。无论如何,当我运行 truffle 控制台并编写时,truffle 能够编译和部署合约 let inst = await Balek.deployed(); 它有效,但我无法从合同中调用任何内容,每次我在控制台中编写以下内容时它都不起作用:
function createZombie() public payable {
require(msg.value >= feeCreateZombie);
zombie memory myZombie;
myZombie.name = "newbie";
myZombie.dna = uint(keccak256( abi.encodePacked(now,msg.sender))) % 5;
myZombie.level = 1;
myZombie.cooldown = now;
zombieToOwner[zombies.push(myZombie) - 1] = msg.sender;
}
我有错误: 未捕获的错误:返回错误:处理事务时出现 VM 异常:恢复
事实上,我从未成功调用过智能合约的函数。所有这些错误对我来说似乎都是相互关联的,每当我尝试调用成功部署的合约的函数时,它都不起作用,即使我可以部署合约......
W T F :d
答案 0 :(得分:0)
Truffle 不使用 .send()
函数来执行合约方法。这在 web3.js 中使用,这是一个不同的库。
可以直接调用对应的JS函数来执行合约方法:
let result = await inst.createZombie({from: accounts[0]});
Truffle 自动(基于合约 ABI)识别它是应该发送(读写)交易还是(只读)调用。