Vue2 Source

Vue2 Test Kit

deprecated warning

create-local-vue

Vue 3 的文档中有提到,由于从同一个 Vue 构造函数中创建的实例共享同一份配置,所以在测试工具(或者其它需要隔离的环境)中容易污染全局配置。Vue3 新增了 createApp 解决这个问题。如果是 Vue2 则需要使用 vue-test-utils 项目中的一个函数,它创建了一个新实例,深拷贝了一份全局函数和配置,并劫持了其 use 方法。

/**
 * @see https://github.com/vuejs/vue-test-utils/blob/e91effeda17e68817aa7bafaaf24a7ffa8185776/packages/shared/create-local-vue.js
 **/
function _createLocalVue(Vue, {}) {
  const instance = _Vue.extend();

  // clone global APIs
  Object.keys(_Vue).forEach((key) => {
    /*...*/
  });

  // clone config
  instance.config = cloneDeep(Vue.config);
  instance.config.errorHandler = config.errorHandler;
  instance.config.optionMergeStrategies = Vue.config.optionMergeStrategies;
  instance.options._base = instance;

  // hijack use method
  const use = instance.use;
  instance.use = (plugin, ...rest) => {
    /*...*/
    use.call(instance, plugin, ...rest);
  };

  return instance;
}

Copyright © 2024 Lionad - CC-BY-NC-CD-4.0