Power-assert
Power Assert trong JavaScript. Cung cấp các thông điệp khẳng định mô tả thông qua giao diện tiêu chuẩn assert. Không có API nào tốt hơn API này.
MÔ TẢ
power-assert
là gì?
- là một hiện thực của khái niệm “Power Assert” trong JavaScript.
- cung cấp các thông điệp khẳng định mô tả qua giao diện tiêu chuẩn assert.
- Không có API nào tốt hơn API này. Với power-assert, bạn không cần phải học nhiều API thư viện khẳng định (trong hầu hết các trường hợp, bạn chỉ cần nhớ một hàm
assert(any_expression)
) - Ngừng ghi nhớ hàng loạt các API khẳng định. Chỉ cần tạo các biểu thức trả về giá trị truthy hoặc không và power-assert sẽ hiển thị chúng ngay trên màn hình làm phần của thông điệp thất bại mà bạn không cần phải gõ một thông điệp nào cả.
- giá trị cốt lõi của power-assert là tính đơn giản và ổn định tuyệt đối. Đặc biệt, power-assert tuân theo hình thức kiểm tra đơn giản nhất,
assert(any_expression)
. - xem các slide: “power-assert, mechanism and philosophy” — buổi nói tại NodeFest 2014.
- [MỚI] Bây giờ bạn không cần
**require('power-assert')**
nữa. Tiếp tục sử dụng**require('assert')**
, và power-assert sẽ tăng cường chúng một cách trong suốt. Xem các slide: From Library to Tool – power-assert as a General Purpose Assertion Enhancement Tool - để nhận đầu ra power-assert, bạn cần biến đổi mã kiểm thử của bạn để tạo ra đầu ra power-assert.
power-assert - power = assert
. Mà không cần biên dịch mã, power-assert hoạt động như cáchassert
bình thường làm.- hoàn toàn tương thích với assert. Vì vậy bạn có thể ngừng sử dụng power-assert và quay lại assert một cách dễ dàng.
- có online demo site.
- hoạt động cả trên phía máy chủ và phía trình duyệt.
- có sẵn thông qua npm và bower.
- hỗ trợ bản đồ nguồn để bạn có thể gỡ lỗi như thường lệ.
- cung cấp babel plugin và babel preset.
- cung cấp browserify transform.
- cung cấp webpack loader.
- cung cấp grunt task và gulp plugin.
- cung cấp command.
- cung cấp custom module loader và convenient config module của nó.
- cung cấp Karma Adapter và Karma Preprocessor.
- hỗ trợ ES6+ qua babel plugin.
- hỗ trợ CoffeeScript.
- hỗ trợ TypeScript.
- có TypeScript type definition
- có công cụ di chuyển mã biến đổi mã hiện có từ chai, should.js và expect.js sang assert.
- AVA, trình chạy thử nghiệm tương lai, giờ đây comes with power-assert builtin
- có Lab transformer để kích hoạt power-assert trên Lab
- có module loader để có được ts-node làm việc cùng với power-assert
- Wallaby.js hỗ trợ power-assert qua Babel compiler/preprocessor
- yêu cầu kéo, báo cáo vấn đề và bản vá luôn được hoan nghênh.
power-assert
cung cấp các thông báo kiểm tra mô tả cho các bài kiểm tra của bạn, như thế này.
1) Array #indexOf() should return index when the value is present:
AssertionError: # path/to/test/mocha_node.js:10
assert(ary.indexOf(zero) === two)
| | | | |
| | | | 2
| -1 0 false
[1,2,3]
[number] two
=> 2
[number] ary.indexOf(zero)
=> -1
API
power-assert cải thiện các hàm assert này bằng espower. Tạo thông báo mô tả khi kiểm tra thất bại.
- assert(value, [message])
- assert.ok(value, [message])
- assert.equal(actual, expected, [message])
- assert.notEqual(actual, expected, [message])
- assert.strictEqual(actual, expected, [message])
- assert.notStrictEqual(actual, expected, [message])
- assert.deepEqual(actual, expected, [message])
- assert.notDeepEqual(actual, expected, [message])
- assert.deepStrictEqual(actual, expected, [message])
- assert.notDeepStrictEqual(actual, expected, [message])
power-assert hoàn toàn tương thích với assert. Vì vậy, các hàm dưới đây cũng có sẵn mặc dù chúng không được cải thiện (không tạo thông báo mô tả).
- assert.fail(actual, expected, message, operator)
- assert.throws(block, [error], [message])
- assert.doesNotThrow(block, [message])
- assert.ifError(value)
Từ phiên bản 1.5.0, power-assert cũng hỗ trợ “strict mode”.
power-assert cung cấp một API for customization.
assert.customize(options)
Không có API là API tốt nhất
Mặc dù power-assert hoàn toàn tương thích với giao diện tiêu chuẩn assert, tất cả những gì bạn cần nhớ chỉ là một hàm assert(any_expression)
trong hầu hết các trường hợp.
Giá trị cốt lõi của power-assert là sự đơn giản và ổn định tuyệt đối. Đặc biệt, power-assert giữ nguyên hình thức kiểm tra đơn giản nhất, assert(any_expression)
.
assert(types[index].name === bob.name)
| || | | | |
| || | | | "bob"
| || | | Person{name:"bob",age:5}
| || | false
| |11 "alice"
| Person{name:"alice",age:3}
["string",98.6,true,false,null,undefined,#Array#,#Object#,NaN,Infinity,/^not/,#Person#]
--- [string] bob.name
+++ [string] types[index].name
@@ -1,3 +1,5 @@
-bob
+alice
FAQ
- Support other assertion styles?
- Does this work with substack/tape?
- Are all dependencies required at runtime?
- Descriptive assertion message does not appear when writing tests in ES6 with Babel
- Incomplete increment/decrement assertion messages?
- Cannot capture not invokable method error
- Là gì là ‘Critical dependencies’ warning shown by webpack và làm thế nào để suppress warnings?
- Causes TypeError: assert._capt is not a function
- How to deal with assert calls in production
- Support JSX tags?
- Any tool to migrate should/expect code to power-assert?
- Conflicts with babel-plugin-istanbul?
- power-assert message does not appear in Node8
CÀI ĐẶT
npm install --save-dev power-assert <one of instrumentors>
hoặc
bower install --save-dev power-assert
npm install --save-dev <one of instrumentors>
NHẬT KÝ THAY ĐỔI
Xem CHANGELOG
VÍ DỤ
Xem phần HOW TO USE để biết thêm chi tiết.
Lưu ý: Có một online demo site có sẵn.
Mã kiểm tra đích (sử dụng Mocha trong ví dụ này)
'use strict';
const assert = require('assert');
describe('Array', function(){
let ary;
beforeEach(() => {
ary = [1,2,3];
});
describe('#indexOf()', () => {
it('should return index when the value is present', () => {
const zero = 0, two = 2;
assert(ary.indexOf(zero) === two);
});
it('should return -1 when the value is not present', () => {
const minusOne = -1, two = 2;
assert.ok(ary.indexOf(two) === minusOne, 'THIS IS AN ASSERTION MESSAGE');
});
});
});
describe('various types', () => {
let types;
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
beforeEach(() => {
types = [
'string', 98.6, true, false, null, undefined,
['nested', 'array'],
{object: true},
NaN, Infinity,
/^not/,
new Person('alice', 3)
];
});
it('demo', () => {
const index = types.length -1,
bob = new Person('bob', 5);
assert(types[index].name === bob.name);
});
});
Đảm bảo biến đổi mã kiểm tra
Để sử dụng power-assert, bạn cần biến đổi mã kiểm tra của mình để có đầu ra từ power-assert.
Biến đổi mã được thực hiện bởi các instrumentor dưới đây:
- espower-loader (với intelli-espower-loader)
- babel-preset-power-assert
- babel-plugin-espower
- espowerify
- webpack-espower-loader.
- espower-cli
- grunt-espower
- gulp-espower
- karma-espower-preprocessor
- espower-coffee
- espower-typescript
- espower-traceur
Nếu bạn chỉ sử dụng Node.js, cách dễ nhất là sử dụng intelli-espower-loader. Các bước thực hiện như sau.
Thiết lập
npm install --save-dev mocha power-assert intelli-espower-loader
Chạy
Đặt các bài kiểm tra vào thư mục test
sau đó chạy. Bạn sẽ thấy đầu ra từ power-assert xuất hiện.
$ $(npm bin)/mocha --require intelli-espower-loader path/to/test/mocha_node.js
Array
#indexOf()
1) should return index when the value is present
2) should return -1 when the value is not present
various types
3) demo
0 passing (43ms)
3 failing
1) Array #indexOf() should return index when the value is present:
AssertionError: # test/example2.js:13
assert(ary.indexOf(zero) === two)
| | | | |
| | | | 2
| -1 0 false
[1,2,3]
[number] two
=> 2
[number] ary.indexOf(zero)
=> -1
+ expected - actual
-false
+true
at Context.it (test/example2.js:13:13)
2) Array #indexOf() should return -1 when the value is not present:
AssertionError: THIS IS AN ASSERTION MESSAGE # test/example2.js:17
assert.ok(ary.indexOf(two) === minusOne, 'THIS IS AN ASSERTION MESSAGE')
| | | | |
| | | | -1
| 1 2 false
[1,2,3]
[number] minusOne
=> -1
[number] ary.indexOf(two)
=> 1
+ expected - actual
-false
+true
at Context.it (test/example2.js:17:20)
3) various types demo:
AssertionError: # test/example2.js:43
assert(types[index].name === bob.name)
| || | | | |
| || | | | "bob"
| || | | Person{name:"bob",age:5}
| || | false
| |11 "alice"
| Person{name:"alice",age:3}
["string",98.6,true,false,null,undefined,#Array#,#Object#,NaN,Infinity,/^not/,#Person#]
--- [string] bob.name
+++ [string] types[index].name
@@ -1,3 +1,5 @@
-bob
+alice
+ expected - actual
-false
+true
at Context.it (test/example2.js:43:9)
DỰ ÁN GỐC
Có một số dự án gốc có sẵn để giúp bạn bắt đầu với power-assert.
module | env | tech stack |
---|---|---|
power-assert-node-seed | Node.js | power-assert + intelli-espower-loader |
power-assert-testem-seed | Trình duyệt (bởi testem) | power-assert + gulp-espower + testem. |
power-assert-karma-seed | Trình duyệt (bởi Karma) | power-assert + espowerify + browserify + Karma. |
CÁCH SỬ DỤNG
Cảm ơn bạn!
Có một số cách để sử dụng power-assert. (Nếu bạn muốn xem các ví dụ hoạt động, xem DỰ ÁN MẪU)
. power-assert
+ Babel
+ babel-preset-power-assert
: Cách duy nhất để kích hoạt power-assert nếu bạn đang sử dụng Babel6+.
. power-assert
+ espower-loader
hoặc intelli-espower-loader
: Đơn giản và được khuyến nghị (nhưng chỉ hoạt động dưới Node).
. power-assert
+ espower-coffee
hoặc espower-typescript
: Sử dụng power-assert với AltJS. Được khuyến nghị nhưng chỉ hoạt động dưới Node.
. power-assert
+ browserify
+ espowerify
: nếu bạn đang sử dụng browserify nhưng không với Babel.
. power-assert
+ webpack
+ webpack-espower-loader
: nếu bạn đang sử dụng webpack nhưng không với Babel.
. power-assert
+ espower-cli
hoặc grunt-espower
hoặc gulp-espower
: Tạo mã đã được cài đặt nên hoạt động ở mọi nơi.
sử dụng babel-preset-power-assert
hoặc babel-plugin-espower
Nếu bạn đang viết mã của mình với Babel, bạn có thể tích hợp tính năng Power Assert với Babel và babel-preset-power-assert (hoặc babel-plugin-espower).
xem babel-plugin-espower README và babel-preset-power-assert README
sử dụng espower-loader
hoặc intelli-espower-loader
Nếu bạn đang viết ứng dụng/mô-đun Node.js, bạn có thể tích hợp tính năng Power Assert mà không cần tạo mã bằng cách sử dụng espower-loader
.
Thông tin thêm: Bạn có thể quan tâm đến intelli-espower-loader để đi xa hơn một bước. Với intelli-espower-loader, bạn không cần tạo tệp loader (như enable-power-assert.js
). Chỉ định địa chỉ thư mục test trong package.json
wow!
sử dụng espower-typescript
Nếu bạn đang viết ứng dụng/mô-đun Node.js bằng TypeScript, bạn có thể tích hợp tính năng Power Assert mà không cần tạo mã bằng cách sử dụng espower-typescript
.
xem espower-typescript README.
sử dụng espower-coffee
Nếu bạn đang viết ứng dụng/mô-đun Node.js bằng CoffeeScript, bạn có thể tích hợp tính năng Power Assert mà không cần tạo mã bằng cách sử dụng espower-coffee
.
sử dụng espowerify
Cảm ơn bạn!
Nếu bạn đang sử dụng browserify nhưng không với Babel, bạn có thể tích hợp tính năng Power Assert thông qua espowerify
.
xem espowerify README.
sử dụng webpack-espower-loader
Nếu bạn đang sử dụng webpack nhưng không với Babel, bạn có thể tích hợp tính năng Power Assert thông qua webpack-espower-loader
.
xem webpack-espower-loader README.
sử dụng espower-cli
Nếu bạn không muốn sử dụng grunt, gulp, browserify, v.v., bạn có thể sử dụng power-assert
qua bower, với mã được tạo bởi espower-cli
.
xem espower-cli README.
sử dụng gulp-espower
Ở phía trình duyệt và bạn không sử dụng browserify nhưng bower và gulp, bạn có thể sử dụng power-assert
qua bower, với mã được tạo bởi gulp-espower
.
xem gulp-espower README.
sử dụng grunt-espower
Ở phía trình duyệt và bạn không sử dụng browserify nhưng bower và Grunt, bạn có thể sử dụng power-assert
qua bower, với mã được tạo bởi grunt-espower
.
xem grunt-espower README.
GIAO DIỆN TÙY CHỈNH
power-assert
cung cấp một API để tùy chỉnh.
var assert = assert.customize(options)
Qua API này, bạn có thể tùy chỉnh power-assert bằng cách thay đổi một số tùy chọn.
var assert = require('power-assert').customize({
output: {
maxDepth: 2
}
});
tùy chọn
options
có hai khóa cấp cao. assertion
và output
.
tùy chọn.assertion
tùy chọn tùy chỉnh cho mô-đun empower. Xem empower API documentation để biết chi tiết. Lưu ý rằng một số giá trị mặc định khác với empower
(modifyMessageOnRethrow: true
và saveContextOnRethrow: true
).
tùy chọn.output
tùy chọn tùy chỉnh cho mô-đun power-assert-formatter. Xem power-assert-formatter API documentation để biết chi tiết.
giá trị mặc định
các thuộc tính có thể tùy chỉnh và các giá trị mặc định của chúng như sau.
var assert = require('power-assert').customize({
assertion: {
destructive: false,
modifyMessageOnRethrow: true,
saveContextOnRethrow: true,
patterns: [
'assert(value, [message])',
'assert.ok(value, [message])',
'assert.equal(actual, expected, [message])',
'assert.notEqual(actual, expected, [message])',
'assert.strictEqual(actual, expected, [message])',
'assert.notStrictEqual(actual, expected, [message])',
'assert.deepEqual(actual, expected, [message])',
'assert.notDeepEqual(actual, expected, [message])',
'assert.deepStrictEqual(actual, expected, [message])',
'assert.notDeepStrictEqual(actual, expected, [message])'
]
},
output: {
lineDiffThreshold: 5,
maxDepth: 1,
anonymous: 'Object',
circular: '#@Circular#',
lineSeparator: '\n',
ambiguousEastAsianCharWidth: 2,
widthOf: (Function to calculate width of string. Please see power-assert-formatter's documentation)
stringify: (Function to stringify any target value. Please see power-assert-formatter's documentation)
diff: (Function to create diff string between two strings. Please see power-assert-formatter's documentation)
writerClass: (Constructor Function for output writer class. Please see power-assert-formatter's documentation)
renderers: [
'./built-in/file',
'./built-in/assertion',
'./built-in/diagram',
'./built-in/binary-expression'
]
}
});
THIẾT KẾ NỘI BỘ
power-assert
family cung cấp 1 mô-đun chính, 4 mô-đun cốt lõi và nhiều cài đặt hơn nữa.
Mô-đun chính (mặt tiền) là,
module | mô tả |
---|---|
power-assert | Hàm assert chuẩn trên nền empower và power-assert-formatter |
các mô-đun cốt lõi là,
module | mô tả |
---|---|
empower | Cải tiến tính năng Power Assert cho hàm/assert object. |
power-assert-formatter | Trình định dạng đầu ra Power Assert. |
espower | Mô-đun cốt lõi cài đặt tính năng Power Assert dựa trên AST ECMAScript định nghĩa trong The ESTree Spec (trước đây được biết đến là Mozilla SpiderMonkey Parser API). |
espower-source | Cài đặt Power Assert từ nguồn tới nguồn, với source-map. (Lớp bao mỏng của espower ). |
và các cài đặt là,
module | mô tả |
---|---|
espower-loader | Node module loader để áp dụng espower ngay lập tức. |
intelli-espower-loader | cấu hình espower-loader dễ dàng. |
babel-preset-power-assert | cài đặt sẵn Babel để tích hợp tính năng power-assert vào các tập tin đích. |
babel-plugin-espower | plugin Babel để tích hợp tính năng power-assert vào các tập tin đích. |
espowerify | chuyển đổi Browserify để áp dụng espower cho các tập tin đích. |
webpack-espower-loader | Mô-đun cài đặt Power Assert cho webpack. |
espower-cli | Công cụ dòng lệnh cho power-assert. |
grunt-espower | Nhiệm vụ Grunt để áp dụng espower cho các tập tin đích. |
gulp-espower | Plugin Gulp để áp dụng espower cho các tập tin đích. |
karma-espower-preprocessor | karma-preprocessor cho power-assert. |
espower-coffee | cài đặt power-assert cho CoffeeScript. |
espower-typescript | cài đặt power-assert cho TypeScript. |
espower-traceur | cài đặt power-assert cho ES6 sử dụng Traceur Compiler. |
espower-babel | [LỖI THỜI] cài đặt power-assert cho ES6 sử dụng Babel. |
power-assert
cung cấp hàm tương thích chuẩn assert với tính năng Power Assert. (Phù hợp nhất với Mocha. Nếu bạn sử dụng các đối tượng giống như assert được cung cấp bởi các framework kiểm tra khác nhau như QUnit hoặc nodeunit. Vui lòng sử dụng các mô-đun empower và power-assert-formatter trực tiếp).
Theo nội bộ, power-assert
sử dụng mô-đun empower để cải tiến tính năng power assert vào mô-đun chuẩn assert, để chạy với mã đã thêm tính năng power assert do mô-đun espower, và làm đẹp đầu ra sử dụng power-assert-formatter.
Xem dự án power-assert-demo để xem Demo power-assert chạy với mocha.
CÁC FRAMEWORK ĐƯỢC HỖ TRỢ
Cảm ơn bạn!
FRAMEWORKS ĐƯỢC BIẾT LÀ HOẠT ĐỘNG
- Jest với Babel
- Karma với Mocha
- testem với Mocha
- QUnit
- nodeunit
- buster-assertions
- Lab
- Nightmare
- Protractor
- eater
CHÍNH SÁCH HỖ TRỢ CỦA CHÚNG TÔI
Đối với phía Transpiler, chúng tôi hỗ trợ Node đang được bảo trì. Nói cách khác, chúng tôi ngừng hỗ trợ phiên bản Node cũ khi their maintenance ends.
Đối với phía Runtime, chúng tôi hỗ trợ Node under maintenance và các trình duyệt “đủ hiện đại” như Chrome, Firefox, Safari, Edge, v.v.
Môi trường khác không được hỗ trợ chính thức (nghĩa là chúng tôi không kiểm tra chúng trên dịch vụ CI). power-assert được biết đến là hoạt động với các trình duyệt cũ và cố gắng giữ chúng hoạt động.
TÁC GIẢ
CỘNG TÁC VIÊN
- azu (azu)
- vvakame (Masahiro Wakame)
- yosuke-furukawa (Yosuke Furukawa)
- teppeis (Teppei Sato)
- zoncoen (Kenta Mori)
- falsandtru (falsandtru)
- jamestalmage (James Talmage)
- LeshaKoss (Lesha Koss)
- watilde (Daijirō Wachi)
GIẤY PHÉP
Được cấp phép dưới giấy phép MIT.
THÊM VÍ DỤ ĐẦU RA
Mã test đích (sử dụng QUnit trong ví dụ này)
var q = require('qunitjs');
(function () {
var empower = require('empower'),
formatter = require('power-assert-formatter'),
qunitTap = require("qunit-tap");
empower(q.assert, formatter(), {destructive: true});
qunitTap(q, require('util').puts, {showSourceOnFailure: false});
q.config.autorun = false;
})();
q.test('spike', function (assert) {
assert.ok(true);
var hoge = 'foo';
var fuga = 'bar';
assert.ok(hoge === fuga, 'comment');
var piyo = 3;
assert.ok(fuga === piyo);
var longString = 'very very loooooooooooooooooooooooooooooooooooooooooooooooooooong message';
var anotherLongString = 'yet another loooooooooooooooooooooooooooooooooooooooooooooooooooong message';
assert.ok(longString === anotherLongString);
assert.ok(4 === piyo);
assert.ok(4 !== 4);
var falsyStr = '';
assert.ok(falsyStr);
var falsyNum = 0;
assert.ok(falsyNum);
var ary1 = ['foo', 'bar'];
var ary2 = ['aaa', 'bbb', 'ccc'];
assert.ok(ary1.length === ary2.length);
assert.deepEqual(ary1, ary2);
var actual = 16;
assert.ok(5 < actual && actual < 13);
actual = 4;
assert.ok(5 < actual && actual < 13);
actual = 10;
assert.ok(actual < 5 || 13 < actual);
var propName = 'bar',
foo = {
bar: {
baz: false
}
};
assert.ok(foo.bar.baz);
assert.ok(foo['bar'].baz);
assert.ok(foo[propName]['baz']);
var truth = true;
assert.ok(!truth);
var func = function () { return false; };
assert.ok(func());
var obj = {
age: function () {
return 0;
}
};
assert.ok(obj.age());
var isFalsy = function (arg) {
return !(arg);
};
var positiveInt = 50;
assert.ok(isFalsy(positiveInt));
var sum = function () {
var result = 0;
for (var i = 0; i < arguments.length; i += 1) {
result += arguments[i];
}
return result;
};
var one = 1, two = 2, three = 3, seven = 7, ten = 10;
assert.ok(sum(one, two, three) === seven);
assert.ok(sum(sum(one, two), three) === sum(sum(two, three), seven));
assert.ok((three * (seven * ten)) === three);
var math = {
calc: {
sum: function () {
var result = 0;
for (var i = 0; i < arguments.length; i += 1) {
result += arguments[i];
}
return result;
}
}
};
assert.ok(math.calc.sum(one, two, three) === seven);
});
q.load();
Chạy mã espower
trên đó sau đó chạy dưới Node.js
# module: undefined
# test: spike
ok 1 - okay
not ok 2 - comment # path/to/examples/qunit_node.js:17
#
# assert.ok(hoge === fuga, 'comment')
# | | |
# | | "bar"
# | false
# "foo"
#
# --- [string] fuga
# +++ [string] hoge
# @@ -1,3 +1,3 @@
# -bar
# +foo
#
# , test: spike
not ok 3 - # path/to/examples/qunit_node.js:20
#
# assert.ok(fuga === piyo)
# | | |
# | | 3
# | false
# "bar"
#
# [number] piyo
# => 3
# [string] fuga
# => "bar"
# , test: spike
not ok 4 - # path/to/examples/qunit_node.js:24
#
# assert.ok(longString === anotherLongString)
# | | |
# | | "yet another loooooooooooooooooooooooooooooooooooooooooooooooooooong message"
# | false
# "very very loooooooooooooooooooooooooooooooooooooooooooooooooooong message"
#
# --- [string] anotherLongString
# +++ [string] longString
# @@ -1,15 +1,13 @@
# -yet anoth
# +very v
# er
# +y
# loo
#
# , test: spike
not ok 5 - # path/to/examples/qunit_node.js:26
#
# assert.ok(4 === piyo)
# | |
# | 3
# false
#
# [number] piyo
# => 3
# [number] 4
# => 4
# , test: spike
not ok 6 - # path/to/examples/qunit_node.js:28
#
# assert.ok(4 !== 4)
# |
# false
# , test: spike
not ok 7 - # path/to/examples/qunit_node.js:31
#
# assert.ok(falsyStr)
# |
# ""
# , test: spike
not ok 8 - # path/to/examples/qunit_node.js:34
#
# assert.ok(falsyNum)
# |
# 0
# , test: spike
not ok 9 - # path/to/examples/qunit_node.js:38
#
# assert.ok(ary1.length === ary2.length)
# | | | | |
# | | | | 3
# | | | ["aaa","bbb","ccc"]
# | 2 false
# ["foo","bar"]
#
# [number] ary2.length
# => 3
# [number] ary1.length
# => 2
# , test: spike
not ok 10 - # path/to/examples/qunit_node.js:39
#
# assert.deepEqual(ary1, ary2)
# | |
# | ["aaa","bbb","ccc"]
# ["foo","bar"]
# , expected: [
# "aaa",
# "bbb",
# "ccc"
# ], got: [
# "foo",
# "bar"
# ], test: spike
not ok 11 - # path/to/examples/qunit_node.js:42
#
# assert.ok(5 < actual && actual < 13)
# | | | | |
# | | | 16 false
# | 16 false
# true
# , test: spike
not ok 12 - # path/to/examples/qunit_node.js:45
#
# assert.ok(5 < actual && actual < 13)
# | | |
# | 4 false
# false
# , test: spike
not ok 13 - # path/to/examples/qunit_node.js:48
#
# assert.ok(actual < 5 || 13 < actual)
# | | | | |
# | | | | 10
# | | false false
# 10 false
# , test: spike
not ok 14 - # path/to/examples/qunit_node.js:58
#
# assert.ok(foo.bar.baz)
# | | |
# | | false
# | Object{baz:false}
# Object{bar:#Object#}
# , test: spike
not ok 15 - # path/to/examples/qunit_node.js:59
#
# assert.ok(foo['bar'].baz)
# | | |
# | | false
# | Object{baz:false}
# Object{bar:#Object#}
# , test: spike
not ok 16 - # path/to/examples/qunit_node.js:60
#
# assert.ok(foo[propName]['baz'])
# | || |
# | |"bar" false
# | Object{baz:false}
# Object{bar:#Object#}
# , test: spike
not ok 17 - # path/to/examples/qunit_node.js:64
#
# assert.ok(!truth)
# ||
# |true
# false
# , test: spike
not ok 18 - # path/to/examples/qunit_node.js:68
#
# assert.ok(func())
# |
# false
# , test: spike
not ok 19 - # path/to/examples/qunit_node.js:76
#
# assert.ok(obj.age())
# | |
# | 0
# Object{age:#function#}
# , test: spike
not ok 20 - # path/to/examples/qunit_node.js:83
#
# assert.ok(isFalsy(positiveInt))
# | |
# false 50
# , test: spike
not ok 21 - # path/to/examples/qunit_node.js:94
#
# assert.ok(sum(one, two, three) === seven)
# | | | | | |
# | | | | | 7
# 6 1 2 3 false
#
# [number] seven
# => 7
# [number] sum(one, two, three)
# => 6
# , test: spike
not ok 22 - # path/to/examples/qunit_node.js:95
#
# assert.ok(sum(sum(one, two), three) === sum(sum(two, three), seven))
# | | | | | | | | | | |
# | | | | | | 12 5 2 3 7
# 6 3 1 2 3 false
#
# [number] sum(sum(two, three), seven)
# => 12
# [number] sum(sum(one, two), three)
# => 6
# , test: spike
not ok 23 - # path/to/examples/qunit_node.js:96
#
# assert.ok(three * (seven * ten) === three)
# | | | | | | |
# | | | | | | 3
# | | | | 10 false
# | | 7 70
# 3 210
#
# [number] three
# => 3
# [number] three * (seven * ten)
# => 210
# , test: spike
not ok 24 - # path/to/examples/qunit_node.js:110
#
# assert.ok(math.calc.sum(one, two, three) === seven)
# | | | | | | | |
# | | | | | | | 7
# | | 6 1 2 3 false
# | Object{sum:#function#}
# Object{calc:#Object#}
#
# [number] seven
# => 7
# [number] math.calc.sum(one, two, three)
# => 6
# , test: spike
1..24
Chúc vui vẻ!
Thông tin Tải xuống:
Tác giả: power-assert-js
Mã nguồn: https://github.com/power-assert-js/power-assert
Giấy phép: MIT license
Cảm ơn bạn!