小さなプログラムがますます広く使用されるようになるにつれて、フロントエンド開発作業も純粋な Web 開発から変化してきました。 Web アプレットのクロスエンド開発に拡張します。研究開発の効率を向上させるために、 より多くの Web モジュールを移行、更新し、小規模なプログラムと互換性を持たせて、端末間での再利用を実現する必要があります。これらのモジュールも、ビジネスに続いて反復とバージョン更新が行われる予定ですが、現時点では、各エンド モジュールの信頼性を確保するために適切な テスト を行う必要があります。
多くの既存の Web モジュールをミニ プログラムに移行したため、Web 側のテストは比較的完了しました。したがって、考慮する必要があるのは次のとおりです。既存の Web ユースケースを小規模なプログラムに迅速に移行する方法
新しいモジュールの場合、両端のユースケースをすばやく作成する方法。
タイプ 2 のモジュールのテスト ケースを移行します。
ミニ プログラム テスト ツールの選択ミニ プログラム公式は現在、ミニ プログラム テストをサポートする 2 つのツールを提供しています。ミニ プログラム オートメーション を選択しました。 Puppeteer で Web 側のテストを実行するのと同様に、ミニ プログラムを自動化し、開発者ツールを制御してミニ プログラム環境でテストを実装できます。 2 つの類似点により、クロスエンドの移行やテスト ケースの再利用の可能性が得られます。
テスト ケースの移行方法レポート モジュールのテスト ケースの移行を例に挙げます。以下は、すでに存在する Web レポート モジュールのテスト ケースです。 Web テスト ケースこのユース ケースでカバーされるパスは次のとおりです:imlog.default.error() メソッドを呼び出す -> ブラウザがリクエストを開始します -> 正解リクエストパラメータ を確認してください。
test('.error()调用正常', async done => { const opts = { project: 'imlogtest', }; // 检查上报请求的参数 const expector = req => { try { const url = req.url(); const method = req.method(); const headers = req.headers(); const body = req.postData(); const data = JSON.parse(body); expect(url).toBe(DEFAULT_URL); // 请求的url符合预期 expect(method).toBe('POST'); // 请求的method符合预期 expect(headers['content-type']).toBe('text/plain'); // 请求的contentType符合预期 expect(data.url).toBe(TEST_PAGE_URL); // 请求体的url字段符合预期 done(); } catch(error) { done(error); } }; // 监听上报请求并校验参数 page.once('request', expector); // 在浏览器中执行上报 page.evaluate( (o) => { const reportor = window.imlog.default; reportor.config(o); reportor.error('test'); // 进行上报 }, opts ); });复制代码
test('.error()调用正常', async done => { const opts = { project: 'imlogtest', }; // 检查上报请求的参数 const expector = req => { try { // diff:按照特定格式解析出小程序请求参数 const {url, method, headers, body, data} = parseWxReqParams(req); expect(url).toBe(DEFAULT_URL); // 请求的url符合预期 expect(method).toBe('POST'); // 请求的method符合预期 expect(headers['content-type']).toBe('text/plain'); // 请求的contentType符合预期 expect(data.url).toBe(TEST_PAGE_URL); // 请求体的url字段符合预期 done(); } catch(error) { done(error); } }; // 监听上报请求并校验参数 // todo: miniProgram对象支持once/on等事件方法 miniProgram.once('request', expector); // 在小程序中执行上报 miniProgram.evaluate( (o) => { // diff: 请求方法挂在小程序app对象上 const reportor = getApp().imlog.default; reportor.config(o); reportor.error('test'); // 进行上报 }, opts ); });复制代码
miniProgram.on('api', fn) の形式で呼び出しを監視する方法が見つかった限り。 events API 中に渡されるパラメータ。
この形式では、Web とミニ プログラムの使用例の唯一の違いは次のとおりです。import { EventEmitter } from 'events';export default class MiniProgram extends EventEmitter { // ...}复制代码
以上が小規模プログラムの自動テストのための wx API インターセプトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。