• Giới thiệu
  • Bảo mật và Quyền riêng tư
  • Liên hệ
Wednesday, October 4, 2023
Thế giới JS & VPS
  • Trang chủ
  • Thế Giới Javascript
    • Full tài liệu học JS Free từ A-Z
    • Học javascript miễn phí
    • Javascript
    • News and Tutorial JS
    • ReactJS
    • Tips vs Tricks JS
    • VueJS
    • NodeJS
  • Thế giới VPS
    • VPS for Developer
  • Top IT
No Result
View All Result
  • Trang chủ
  • Thế Giới Javascript
    • Full tài liệu học JS Free từ A-Z
    • Học javascript miễn phí
    • Javascript
    • News and Tutorial JS
    • ReactJS
    • Tips vs Tricks JS
    • VueJS
    • NodeJS
  • Thế giới VPS
    • VPS for Developer
  • Top IT
No Result
View All Result
Thế giới JS & VPS
No Result
View All Result
Home Thế Giới Javascript Javascript

Power-Assert: Dễ dàng Sử dụng Assertion trong JavaScript

by Joker
September 18, 2023
in Javascript, Thế Giới Javascript
0
0
SHARES
0
VIEWS
Share on FacebookShare on TwitterShare on Pin

Nội dung chính

  • Power-assert
  • MÔ TẢ
  • API
    • Không có API là API tốt nhất
  • FAQ
  • CÀI ĐẶT
  • NHẬT KÝ THAY ĐỔI
  • VÍ DỤ
    • Mã kiểm tra đích (sử dụng Mocha trong ví dụ này)
    • Đảm bảo biến đổi mã kiểm tra
    • Thiết lập
    • Chạy
  • DỰ ÁN GỐC
  • CÁCH SỬ DỤNG
    • sử dụng babel-preset-power-assert hoặc babel-plugin-espower
    • sử dụng espower-loader hoặc intelli-espower-loader
    • sử dụng espower-typescript
    • sử dụng espower-coffee
    • sử dụng espowerify
    • sử dụng webpack-espower-loader
    • sử dụng espower-cli
    • sử dụng gulp-espower
    • sử dụng grunt-espower
  • GIAO DIỆN TÙY CHỈNH
    • var assert = assert.customize(options)
    • tùy chọn
      • tùy chọn.assertion
      • tùy chọn.output
      • giá trị mặc định
  • THIẾT KẾ NỘI BỘ
  • CÁC FRAMEWORK ĐƯỢC HỖ TRỢ
    • FRAMEWORKS ĐƯỢC BIẾT LÀ HOẠT ĐỘNG
  • CHÍNH SÁCH HỖ TRỢ CỦA CHÚNG TÔI
  • TÁC GIẢ
  • CỘNG TÁC VIÊN
  • GIẤY PHÉP
  • THÊM VÍ DỤ ĐẦU RA
    • Mã test đích (sử dụng QUnit trong ví dụ này)
    • Chạy mã espower trên đó sau đó chạy dưới Node.js
  • Thông tin Tải xuống:

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ách assert 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>

xem list 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.

xem espower-loader README.

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.

xem espower-coffee README.

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Ợ

  • Mocha
  • AVA

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Ả

  • Takuto Wada

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!

Tags: javascriptnodenodejs
Previous Post

JavaScript Đệ quy: Hướng dẫn cho Người Mới Học

Next Post

Dễ dàng Lấy, Lưu trữ và Cập nhật Dữ liệu Bất đồng bộ trong React-React Hook

Next Post

Dễ dàng Lấy, Lưu trữ và Cập nhật Dữ liệu Bất đồng bộ trong React-React Hook

  • Trending
  • Comments
  • Latest
Học javascript miễn phí | Giới thiệu về toàn tập về JavaScript là gì một cách đơn giản nhất

Học javascript miễn phí | Tìm hiểu cực chi tiết và dễ hiểu về đối tượng(Objects) trong JavaScript

July 2, 2023
Học javascript miễn phí | Giới thiệu về toàn tập về JavaScript là gì một cách đơn giản nhất

Học javascript miễn phí | Tìm hiểu cực chi tiết và dễ hiểu về Hàm(function) trong JavaScript

June 28, 2023
Học javascript miễn phí | Giới thiệu về toàn tập về JavaScript là gì một cách đơn giản nhất

Học javascript miễn phí | Tìm hiểu cực chi tiết và dễ hiểu về Toán tử số học và ví dụ trong JavaScript

July 4, 2023
Học javascript miễn phí | Giới thiệu về toàn tập về JavaScript là gì một cách đơn giản nhất

Học javascript miễn phí | Tìm hiểu cực chi tiết và dễ hiểu về hàm mũi tên là gì và làm thế nào để tạo ra nó? trong JavaScript

July 6, 2023
Top IT | Top 5 xu hướng DevOps đang thịnh hành hiện nay mà các developer nên biết

Top IT | Top 5 xu hướng DevOps đang thịnh hành hiện nay mà các developer nên biết

0
TopIT | Chọn Python để phát triển web – Top 16 ưu và nhược điểm hàng đầu bạn cần biết

TopIT | Chọn Python để phát triển web – Top 16 ưu và nhược điểm hàng đầu bạn cần biết

0
TopIT | Top 16 thư viện React mà các developer nên biết

TopIT | Top 16 thư viện React mà các developer nên biết

0
TopIT | Top 17 ứng dụng web cực hay developer nên sử dụng để tăng năng suất

TopIT | Top 17 ứng dụng web cực hay developer nên sử dụng để tăng năng suất

0

Lấy Giá Trị Hàng Được Chọn Trong Bảng HTML bằng jQuery

October 2, 2023

Thêm Các Nút FAB Tuỳ Chỉnh và Thiết Kế Vật Liệu vào Ứng Dụng React Native của Bạn

October 2, 2023

Cách Tạo Một Đồng Hồ Bấm Đơn Giản bằng JavaScript

October 2, 2023

Rebass: Các thành phần giao diện người dùng nguyên thủy React được xây dựng với Styled-system

October 2, 2023

Recent News

Lấy Giá Trị Hàng Được Chọn Trong Bảng HTML bằng jQuery

October 2, 2023

Thêm Các Nút FAB Tuỳ Chỉnh và Thiết Kế Vật Liệu vào Ứng Dụng React Native của Bạn

October 2, 2023

Cách Tạo Một Đồng Hồ Bấm Đơn Giản bằng JavaScript

October 2, 2023

Rebass: Các thành phần giao diện người dùng nguyên thủy React được xây dựng với Styled-system

October 2, 2023

Thế giới Javascript vs VPS

We bring you the best News, Tutorial, Tips.v..v about Javascript language and VPS that perfect for developer full stack, Web, Backend, Newbie...to learn.

Follow Us

Top trending

  • Học javascript miễn phí
  • Javascript
  • Lập trình web
  • News and Tutorial JS
  • Thế Giới Javascript
  • Tip vs Tricks HTML/CSS
  • Tips vs Tricks JS
  • Top IT

Bài đang hot

Lấy Giá Trị Hàng Được Chọn Trong Bảng HTML bằng jQuery

October 2, 2023

Thêm Các Nút FAB Tuỳ Chỉnh và Thiết Kế Vật Liệu vào Ứng Dụng React Native của Bạn

October 2, 2023
  • Giới thiệu
  • Bảo mật và Quyền riêng tư
  • Liên hệ

© 2020 VPSUS - Share everything about Javascript and VPS by JSTEAM.

No Result
View All Result
  • Thế Giới Javascript
    • Học javascript miễn phí
    • Javascript
    • News and Tutorial JS
    • ReactJS
    • Tips vs Tricks JS
  • Thế giới VPS
    • VPS for Developer
  • Top IT

© 2020 VPSUS - Share everything about Javascript and VPS by JSTEAM.