登录 |  注册
首页 >  移动开发 >  微信小程序开发教程 >  小程序常用示例

小程序常用示例

这里提供一些常用的测试方法示例,以帮助你更好地去使用自动化 SDK 完成测试任务。

错误处理

SDK 的方法调用有可能会抛出错误,比如 miniProgram.navigateTo('path/to/page') 在页面不存在时会出错。

在可能出错的代码上,你可以使用 try catch 进行处理,比如下面这样:

automator.launch().then(async miniProgram => {
  let page  try {
    page = await miniProgram.navigateTo('/page/component/index')
  } catch (e) {
    // 处理出错情况
    console.log(e.message)
  }})

模板测试

小程序的模板是由 WXML 标记语言编写的。在执行时,小程序会将模板和页面数据相结合渲染出最终的页面来。测试框架 Jest 提供了一项很棒的快照功能。利用这个特性和 SDK 提供的设置页面数据接口,你可以很轻松地测试模板文件在不同数据下渲染出来的结果是否正确。

下面是小程序示例测试接口页模板的代码示例:

const automator = require('miniprogram-automator')describe('api', () => {
  let miniProgram  let page  beforeAll(async () => {
    miniProgram = await automator.launch({
      projectPath: 'path/to/miniprogram-demo'
    })
    page = await miniProgram.reLaunch('/page/API/index')
    await page.waitFor(500)
  })

  afterAll(async () => {
    await miniProgram.close()
  })

  it('wxml', async () => {
    const element = await page.$('page')
    expect(await element.wxml()).toMatchSnapshot()
    await page.setData({
      list: []
    })
    expect(await element.wxml()).toMatchSnapshot()
  })})

测试环境

在测试时,有时候你可能需要执行一些特殊逻辑,比如使用测试账号,或者使用不同的请求地址。这种情况我们建议在小程序代码中植入这部分代码,然后在全局对象 globalData 上设置开关,通过 SDK 提供的执行代码片段功能在测试时开启。

下面是小程序示例测试登录接口页模板的代码示例:

const automator = require('miniprogram-automator')describe('api', () => {
  let miniProgram  let page  beforeAll(async () => {
    miniProgram = await automator.launch({
      projectPath: 'path/to/miniprogram-demo'
    })
    // 直接更改全局变量
    await miniProgram.evaluate(() => {
      getApp().globalData.hasLogin = true
    })
    page = await miniProgram.reLaunch('/page/API/pages/login/login')
    await page.waitFor(500)
  })

  afterAll(async () => {
    await miniProgram.close()
  })

  it('wxml', async () => {
    const element = await page.$('page')
    expect(await element.wxml()).toMatchSnapshot()
  })})

伪造请求结果

在测试环境中,有时为了模拟各种情况,需要对 wx 方法调用的结果进行伪造,比如伪造地理位置、伪造请求结果等,这种情况下就可以使用 miniProgram.mockWxMethod

下面是伪造特定请求结果的代码示例:

const automator = require('miniprogram-automator')describe('api', () => {
  let miniProgram  beforeAll(async () => {
    miniProgram = await automator.launch({
      projectPath: 'path/to/miniprogram-demo'
    })
  })

  afterAll(async () => {
    await miniProgram.close()
  })

  it('request', async () => {
    const mockData = [
      {
        rule: 'testRequest',
        result: {
          data: 'test',
          cookies: [],
          header: {},
          statusCode: 200,
        },
      },
    ]
    await miniProgram.mockWxMethod(
      'request',
      function(obj, data) {
        for (let i = 0, len = data.length; i < len; i++) {
          const item = data[i]
          const rule = new RegExp(item.rule)
          if (rule.test(obj.url)) {
            return item.result          }

          // 没命中规则的真实访问后台
          return new Promise(resolve => {
            obj.success = res => resolve(res)
            obj.fail = res => resolve(res)
            this.origin(obj)
          })
        }
      },
      mockData,
    )
    
    const result = await miniProgram.callWxMethod('request', {
      url: 'https://14592619.qcloud.la/testRequest',
    })
    console.log(result.data) // -> 'test'
    await miniProgram.restoreWxMethod('request')
  })})
上一篇: Element API
推荐文章
  • ReactNative开发工具涵盖了从代码编辑器、集成开发环境(IDE)、调试工具到特定功能库和辅助服务的广泛范围。以下是部分关键工具,旨在提升ReactNative开发效率、调试体验和应用性能:代码编辑器与IDEVisualStudioCode (VSCode):流行的开源代码编辑器,具有强大的插
  • ReactNative是一个开源的跨平台移动应用开发框架,由Facebook在2015年4月首次推出。其核心理念是使用一套统一的JavaScript代码库,结合React(一个用于构建用户界面的声明式、高效且灵活的JavaScript库)的编程模型,来构建原生移动应用程序,同时支持iOS和Andro
  • 微信小程序的开发工具主要包括以下几类:微信开发者工具:官方工具:这是微信官方提供的核心开发工具,是开发微信小程序的首选和必备工具。它集成了代码编辑、调试、预览、发布等功能,支持实时预览效果、模拟器测试、性能分析、远程调试等,帮助开发者高效地完成小程序的编写、测试与发布流程。官方开发者工具通常会保持与
  • 小程序简介微信小程序(英文名:WeChatMiniProgram)是由腾讯公司推出的基于微信平台的应用形态。它是一种无需用户下载安装即可使用的轻型应用程序,用户可以通过扫描二维码、搜索关键词或者在微信内通过特定入口(如发现页的小程序列表、公众号关联小程序等)直接访问。小程序以其“触手可及,用完即走”
  • Android碎片(Fragment)是Android应用程序架构中的一个重要组件,旨在支持构建适应不同屏幕尺寸和形态的应用界面。以下是关于Fragment的详细说明:概念与作用定义与性质:Fragment 是一个可以嵌入在 Activity 内部的、具有独立用户界面和生命周期的模块化组件,继承自 
  • Android服务(Service)Android服务(Service)是Android应用程序架构中的四大组件之一,它专为在后台执行长时运行任务而设计,无需与用户直接交互或显示界面。以下是关于Android服务的详细说明:概念与作用定义与性质:Service 是一个应用程序组件,继承自 andro
学习大纲