Packhouse
  • Introduction
  • Versions
  • Core
    • Group
      • Mold
      • Tool
      • Line
    • Invoke
    • Utils
    • Event
    • Merger
    • Plugin
    • Main
    • Intercept Error
  • Plugins
    • Step
    • Order
  • Tooling
    • Unit Test
  • Application
    • API Service
  • From
    • GitHub
    • Metal Sheep
Powered by GitBook
On this page
  • Restore All
  • 使用mocha與chai

Was this helpful?

  1. Tooling

Unit Test

Packhouse Test

PreviousOrderNextAPI Service

Last updated 5 years ago

Was this helpful?

能針對每個環節進行測試,這是函數式程式設計的優點之一,而Packhouse提供了一種簡單的Mock方法能應付所有細節:

Test是一個,使用前必須先引用:

let Test = require('packhouse/plugins/Test')
let Packhouse = require('Packhouse')
let packhouse = new Packhouse()

packhouse.plugin(Test)

let group = {
    tools: {
        sum: {
            handler(self, v1, v2) {
                self.success(v1 + v2)
            }
        }
    }
}

packhouse.addGroup('math', () => ({ data: group }))

// mock options
packhouse.test.mock('tool', 'math/sum', options => {
    options.handler = self => self.success(50)
})

packhouse.tool('math/sum').action(10, 20, (error, result) => {
    console.log(result) // 50
})

// restore
packhouse.test.restore('tool', 'math/sum')

packhouse.tool('math/sum').action(10, 20, (error, result) => {
    console.log(result) // 30
})

Restore All

將所有Mock物件回到原樣:

packhouse.test.restoreAll()

使用mocha與chai

let { expect } = require('chai')
let Test = require('packhouse/plugins/Test')
let Packhouse = require('Packhouse')
let packhouse = new Packhouse()

packhouse.plugin(Test)

let group = {
    tools: {
        sum: {
            handler(self, v1, v2) {
                self.success(v1 + v2)
            }
        }
    }
}

describe('#Test', function() {
    this.timeout(0)
    before(function() {
        packhouse.test.mock('tool', 'math/sum', options => {
            options.handler = self => self.success(50)
        })
    })

    after(function() {
        packhouse.test.restore('tool', 'math/sum')
    })

    it('test', function(done) {
        packhouse.tool('math/sum').action(10, 10, (error, result) => {
            expect(result).to.equal(50)
        })
    })
})

與分別為單元測試庫與斷言庫,這只是一個泛用測試組合,以下範例說明如何應用Packhouse進行測試:

Plugin
mocha
chai