Skip to main content

Puppet Provider: Mock

Wechaty Puppet Mock

Wechaty Puppet Mock

NPM Version npm (tag)

Features

  1. Helps to test Wechaty framework with a mock puppet.
  2. Can be used as a starter template for writing your own puppet provider.

Usage

Run wechaty-puppet-mock.

npm install wechaty-puppet-mock
export WECHATY_PUPPET=wechaty-puppet-mock
npm start

Mocker and Environment

import {
PuppetMock,
Mocker,
SimpleEnvironment,
} from 'wechaty-puppet-mock'

const mocker = new Mocker()
mocker.use(SimpleEnvironment())

const puppet = new PuppetMock({ mocker })
const wechaty = new Wechaty({ puppet })

wechaty.start()

// The Mocker will start perform the SimpleEnvironment...

See: SimpleEnvironment.

API Reference

Mocker

import { Wechaty }  from 'wechaty'
import {
PuppetMock,
mock,
} from 'wechaty-puppet-mock'

const mocker = new mock.Mocker()
const puppet = new PuppetMock({ mocker })
const bot = new Wechaty({ puppet })

await bot.start()

mocker.scan('https://github.com/wechaty', 1)

const user = mocker.createContact()
mocker.login(user)

const contact = mocker.createContact()
const room = mocker.createRoom()

user.say('Hello').to(contact)
contact.say('World').to(user)

Helper Utilities

StateSwitch

this.state.on('pending')
this.state.on(true)
this.state.off('pending')
this.state.off(true)

await this.state.ready('on')
await this.state.ready('off')

MemoryCard

await memory.set('config', { id: 1, key: 'xxx' })
const config = await memory.get('config')
console.log(config)
// Output: { id: 1, key: 'xxx' }

Example: unit testing for math_master game

math_master is a Wechaty Vorpal Contrib command which is a simple game for answering math questions that asked by a Wechaty bot.

Math Master Wechaty Game

You can read the unit testing script at: https://github.com/wechaty/wechaty-vorpal-contrib/blob/master/src/contrib/math_master/math_master.spec.ts

History

Milestones for master branch:

v0.25 (July 13, 2020)

  1. Rename MockXXX to XXXMock for keep the consistent naming style with PuppetMock.
  2. Export mock namespace and move all related modules under it.

v0.22 (June 4, 2020)

Mocker Released. Mocker is a manager for controlling the behavior of the Puppet activities.

  1. Add MockContact, MockRoom, and MockMessage for Mockers
  2. Add MockEnvironment for mocking the server behaviors.
  3. Support Wechaty#Contact.find() from the mocker.createContacts().
  4. Support Wechaty#Room.find() from the mocker.createRooms().
  5. Support message event for talker, listener, and room of MockMessage.

v0.0.1 (Jun 27, 2018)

Initial version.

PuppetMock is a skelton Puppet without do anything, it will make testing easy when developing Wechaty.

Maintainers