Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

29_Xinpeng-Huang Homework 4 #344

Open
wants to merge 21 commits into
base: 29-Xinpeng-Huang
Choose a base branch
from
Open

29_Xinpeng-Huang Homework 4 #344

wants to merge 21 commits into from

Conversation

xph
Copy link

@xph xph commented Jan 20, 2018

@jonnyhsy 这次作业难度明显增加,今天只有时间写出最基本的两个unit test,我有几件事情没太搞懂,还求指教:

  1. 没弄明白怎么在unit test中测试revert,试了老半天没试出来,没有这个就写不了测试异常的test...
  2. 貌似在一个文件中的所有的test会串联执行,而且中间好像不会重置状态,我一开始在第一个test里加了accounts[1]在第二个test里也加accounts[1]会抛出异常,因为accounts[1]已经在employees中。只有把一个改成accounts[2]后才成功的。对于写unit test来说这好像不理想,能不能再跑每个test之前都重置?

希望周末有时间会做些补充

@dryruner
Copy link
Collaborator

问题1 测试revert就是js test中调用合约方法发生异常时,去error message里找是否有'invalid opcode', 'invalid JUMP', 之类的错误消息。 比如:https://github.com/OpenZeppelin/zeppelin-solidity/blob/e16c4042c1767b7e83c94d9dcef00c826d653ec9/test/helpers/expectThrow.js。 (你也可以参考其他同学的例子,基本都是这个思路。)

问题2 你的发现是对的,同一个contract {...}里的it()之间是有依赖关系的。解决方法是beforeEach() {...} block, beforeEach()会对每个it()块执行前执行一次。 还有个before()块,在所有it()块执行前,只执行一次。truffle用的是chai.js, 这是chai的语法,你可以搜一下。

@dryruner
Copy link
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants