Skip to content

wechaty/puppet-mock

Repository files navigation

PUPPET-MOCK

NPM Version npm (tag) NPM ES Modules

chatie puppet

Picture Credit: https://softwareautotools.com/2017/03/01/mocking-explained-in-python/

Powered by Wechaty TypeScript

Puppet Mocker & Starter Template for Wechaty, it is very useful when you:

  1. Want to test the Wechaty framework with a mock puppet, or
  2. You want to write your own Puppet implenmentation.

Then PuppetMock will helps you a lot.

USAGE

Puppet Mock

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

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

wechaty.start()

Mocker & 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')

Watchdog

MemoryCard

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

HISTORY

master v1.18 (Mar 14, 2022)

Upgrade to Wechaty Puppet v1.18

v1.0 (Oct 29, 2021)

Release v1.0 of Puppet Mock

  1. v0.31: Support ES Modules

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

AUTHOR

Huan LI <zixia@zixia.net>

profile for zixia on Stack Exchange, a network of free, community-driven Q&A sites

COPYRIGHT & LICENSE

  • Code & Docs © 2018 Huan LI <zixia@zixia.net>
  • Code released under the Apache-2.0 License
  • Docs released under Creative Commons