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​