因为年后开始研究 Appium 框架,而 Appium 客户端是用 node.js 编写的,所以要学习一下 node.js 的知识。
下载完安装包安装就行,安装完成以后在 cmd 下敲如下命令:
D:\node.js\0210>node -v
v0.12.0
如果显示版本号,那就说明安装成功了。
D:\node.js\0210>node
> console.log('HelloWorld')
HelloWorld
undefined
>
推荐采用这种方式
新建一个 js 文件,取名为helloworld.js
然后在命令行模式下定位到文件所在目录,然后执行命令
D:\node.js\0210>node helloworld.js
Helloworld
D:\node.js\0210>
新建一个assert.js
,输入以下内容:
var assert = require('assert')
assert.fail(actual, expected, message, operator)
永远都会抛出异常
var assert = require('assert')
assert.fail(5,5,null,'===')
assert.fail(5,5,undefined,'===')
assert.fail(5,5,"test",'===')
执行 node 命令后输出:
D:\node.js\0209>node assert.js
assert.js:86
throw new assert.AssertionError({
^
AssertionError: 5 === 5
at Object.<anonymous> (D:\node.js\0209\assert.js:2:8)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
然后我们注释第二行:
var assert = require('assert')
//assert.fail(5,5,null,'===')
assert.fail(5,5,undefined,'===')
assert.fail(5,5,"test",'===')
这个时候我们执行结果和上面是一样的。说明null
和undefined
是一样的效果。这个时候我们注释第三行:
var assert = require('assert')
//assert.fail(5,5,null,'===')
//assert.fail(5,5,undefined,'===')
assert.fail(5,5,"test",'===')
这个时候的输出就不一样了:
D:\node.js\0209>node assert.js
assert.js:86
throw new assert.AssertionError({
^
AssertionError: test
at Object.<anonymous> (D:\node.js\0209\assert.js:4:8)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
D:\node.js\0209>
所以从上面的例子可以看出,fail 断言不管参数是什么,都会跳出程序的执行,只不过打印的异常信息不一样而已
assert(value, message)
判断第一个参数 value 是否为真,如果不为真就跳出程序,并输出 message
上面之所以叫构造方法,因为我认为它用了 assert 自身,没有加入.
号来调用方法。所以暂且用构造方法来定义该小节吧。
var assert = require('assert')
assert(2>3,'2 not bigger than 3')
执行该程序:
D:\node.js\0209>node assert.js
assert.js:86
throw new assert.AssertionError({
^
AssertionError: 2 not bigger than 3
at Object.<anonymous> (D:\node.js\0209\assert.js:5:1)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
D:\node.js\0209>
如果我们把 2 和 3 的位置颠倒,它就不会抛出异常了。
var assert = require('assert')
assert(3>2,'2 not bigger than 3')
D:\node.js\0209>node assert.js
D:\node.js\0209>
assert.ok(value, [message])
和上面构造方法的方式是一样的
assert.equal(actual, expected, [message])
判断 actual 和 expected 的值是否相等,如果不相等就抛出异常并打印 message
浅测试,等同于使用'=='进行相等判断
下面的程序乍一个看有点懵,主要是检测 hello 和 hello1 是否相等,如果不相等打印 hello2,并抛出异常,那么 hello 和 hello1 自然是不相等的。那执行下面程序会抛出异常
var assert = require('assert')
assert.equal('hello','hello1','hello2')
D:\node.js\0209>node assert.js
assert.js:86
throw new assert.AssertionError({
^
AssertionError: hello2
at Object.<anonymous> (D:\node.js\0209\assert.js:2:8)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
D:\node.js\0209>
assert.notEqual(actual, expected, [message])
浅测试,等同于使用'!='进行不相等判断
与 equal 逻辑相反
利用上面的例子,只不过把 equal 改为 notEqual:
var assert = require('assert')
assert.notEqual('hello','hello1','hello2')
上面的代码执行后不会报错,因为hello!=hello1
D:\node.js\0209>node assert.js
D:\node.js\0209>
想报错么?想的话,把 hello 改成 hello1 就行。
深度/非深度匹配
何意呢?何为深度?
就是如果是一个对象,里面的属性都要匹配。
那么 notDeepEqual 是不是就不是深度匹配?
当然不是,依然采用的是深度匹配原则,跳出程序的逻辑不一样,notDeepEqual 会在 2 个对象属性都相等的情况下跳出程度。至于这两个方法我就不举例,因为我还不知道对象咋定义。
使用严格匹配原则
啥是严格匹配啊?
就是利用===
符号表示相等,!==
来表示不相等。