我有一个使用Vue
运行的应用程序,我正在使用testcafe
进行端到端测试。
MyModule.ts
class MyModule {
public value: string;
constructor() {}
}
export default new MyModule();
测试咖啡馆文件
import MyModule from '../models/utils/MyModule';
fixture('Getting Started')
.page('http://localhost:8080/en/home/')
.before(async (ctx) => {
MyModule.value = 'Set by Test Cafe';
});
test('Get to the home page', async (t) => {
....
});
应用.vue
<template>.....</template>
<script>
import TeMyModulestModule from '@/test/e2e/models/utils/MyModule';
export default {
created() {
console.log('MyModule.value', MyModule.value);
}
}
</script>
实际结果
MyModule.value未定义
预期结果
MyModule.value"由测试咖啡馆设置">
问题
有可能通过testCafe实现这一点吗?如果是这样,我做错了什么?
TestCafe测试夹具是一个常规的node.js脚本,它在服务器端执行。您正在尝试在不同的上下文(node.js服务器端和浏览器客户端(之间共享模块。
您可以使用ClientFunction或Inject-Client Scripts方法将指定的值放入全局window
对象中,并从Vue脚本中获取该值。