# liff-mock
**Repository Path**: mirrors_line/liff-mock
## Basic Information
- **Project Name**: liff-mock
- **Description**: LIFF Mock is a LIFF Plugin that make testing your LIFF app easy.
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-04-26
- **Last Updated**: 2026-03-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# LIFF Mock
LIFF Mock is a LIFF Plugin that make testing your LIFF app easy.
**※ LIFF Plugin feature is available since LIFF SDK v2.19.0.**
# Usage
## NPM
```sh
$ npm install @line/liff-mock
```
```ts
import liff from '@line/liff';
import { LiffMockPlugin } from '@line/liff-mock';
liff.use(new LiffMockPlugin());
liff.init({
liffId: 'liff-xxxx',
mock: true, // enable mock mode
});
if (!liff.isInClient()) liff.login();
const profile = await liff.getProfile();
// { displayName: 'Brown', userId: '123456789', statusMessage: 'hello' }
console.log(profile);
```
### With [Pluggable SDK](https://developers.line.biz/en/docs/liff/pluggable-sdk/)
If you use LIFF Mock with Pluggable SDK mode, you have to install `IsInClientModule` before the installation of `LiffMockPlugin` because LIFF Mock depends on `liff.isInClient` API.
```ts
import liff from '@line/liff/core';
import IsInClientModule from '@line/liff/is-in-client';
import { LiffMockPlugin } from '@line/liff-mock';
liff.use(new IsInClientModule()); // <-- Please install IsInClientModule before LiffMockPlugin
liff.use(new LiffMockPlugin());
liff.init({
liffId: 'liff-xxxx',
mock: true, // enable mock mode
});
if (!liff.isInClient()) liff.login();
const profile = await liff.getProfile();
// { displayName: 'Brown', userId: '123456789', statusMessage: 'hello' }
console.log(profile);
```
## CDN
https://unpkg.com/@line/liff-mock@1.0.4/dist/umd/liff-mock.js
```html
```
```js
const liff = window.liff;
const liffMockPlugin = window.liffMock;
liff.use(new LiffMockPlugin());
liff.init({
liffId: 'liff-xxxx',
mock: true, // enable mock mode
});
if (!liff.isInClient()) liff.login();
const profile = await liff.getProfile();
// { displayName: 'Brown', userId: '123456789', statusMessage: 'hello' }
console.log(profile);
```
# API
## liff.$mock.set
Set mock data
```ts
type set = (
data: Partial | ((prev: Partial) => Partial)
) => void;
```
```js
const profile = await liff.getProfile();
// { displayName: 'Brown', userId: '123456789', statusMessage: 'hello' }
console.log(profile);
liff.$mock.set((p) => ({
...p,
getProfile: { displayName: 'Cony', userId: '1111111' },
}));
const profile = await liff.getProfile();
// { displayName: 'Cony', userId: '1111111' }
console.log(profile);
```
## liff.$mock.clear
Restore default mock data
```ts
type clear: () => void;
```
```js
// liff.$mock.set(...)
const profile = await liff.getProfile();
// { displayName: 'Cony', userId: '1111111' }
console.log(profile);
liff.$mock.clear();
const profile = await liff.getProfile();
// { displayName: 'Brown', userId: '123456789', statusMessage: 'hello' }
console.log(profile);
```
# Example
See [examples](./examples)
# Contribution
```sh
$ nvm use
$ npm ci
```