《智能合约开发课》学习4:Mocha测试框架

in cn •  7 years ago  (edited)

img最近报名参加了硅谷区块链举办的《智能合约开发课》第二期培训班,根据培训要求,不能完全透露课程的内容,但我会在steemit上记录我的成长过程。

课程还没有正式开始,我先多多预习一些相关内容,需要补的内容非常多,所以学习起来不太系统。上一篇发现Javascript上的测试用例读不懂,就回到前面的Truffle官方文档,来补一些Mocha的内容。

Google到最有名的一篇介绍Mocha的中文教程是阮一峰写的,我以前读过他写的其它技术文章,思路非常清晰,所以直接就从他的这篇文章入手了。

他的文章写得太详细了,我再重复一遍真是浪费。原来这个名叫“摩卡”的框架诞生于2011年,现在已经是非常流程的Javascript测试框架。

安装

因为我已经安装过node.js,按照阮一峰写的教程,飞快地安装了他写好的mocha-demos。

第一个例子

我以前没读懂的测试代码在第一篇例子(demo01)里就找到了相似的代码:

describe('加法函数的测试', function() {
  it('1 加 1 应该等于 2', function() {
    expect(add(1, 1)).to.be.equal(2);
  });
});

原来测试脚本中要有describe块(测试套件test suite),每个describe块里有it块(测试用例test case)。每个函数调用的写法都是一个测试名称后面加上一个测试函数构成的。

这个框架里的断言assert写得像一段英文句子。

expect(add(1, 1)).to.be.equal(2);

看到这里,再翻回前面的智能合约的测试用例,全明白了。

contract('Conference', function(accounts) {
  it("should assert true", function(done) {
    var conference = Conference.at(Conference.deployed_address);
    assert.isTrue(true);
    done();   // stops tests at this point
  });
});

在合约的测试里,不用describe,而用contract。后面的 it 用法一样。上面的代码没有用expect()函数,而是用了assert。

demo01用一行命令就可以测试通过了。

mocha add.test.js

后续的例子

看到demo02例子,以前学习truffle里建立的MetaCoin里的test子文件夹也明白了,mocha会自动测试在test里的所有js文件。

看到第9部分时,出现了Promise这个术语,不明白,还得继续补课。


本文由币乎(bihu.com)内容支持计划奖励

2017年年底前与 @yellowbird 共同发起了一项2017年终总结抽奖活动,参与链接:https://steemit.com/cn/@yellowbird/steemit-2017 ,欢迎大家踊跃参加。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
  ·  7 years ago (edited)

老大,你那个白花花的东东是一行行的程序吧,眼花呀,要了命了。认字母还凑合,中间夹杂好多的符号就搞不清楚了。

那些字符就是程序员的创造的所谓的代码