【发布时间】:2017-02-19 23:29:40
【问题描述】:
我正在使用 TypeScript 开发一个 React-Native 项目。要编写我的单元测试,我想使用 babel-plugin-rewire 来模拟我的模块导入。但是,TypeScript 在从 ES6 转换为 ES5 时在导入末尾添加了 _1 后缀,这破坏了我的测试代码。
考虑以下几点:
import Test from 'test-file';
这可能会被 TypeScript 转换为:
var test_file_1 = require('test-file');
要使用 Rewire 插件模拟 Test 类,我必须编写:
ComponentToTest.__Rewire__('Test', TestMock);
但由于导入已重命名,这将中断。
虽然这是by design,但我很想知道是否有任何解决方法。
谢谢。
【问题讨论】:
-
您是如何设法将测试模块导入规范文件(即
import { SomeClass, __Rewire__ } from '../src/SomeClass';)的?当我尝试运行测试时,编译器会打印以下错误"SomeClass" has no exported member '__Rewire__'。附言spec 文件也是用 TypeScript 编写的。
标签: unit-testing typescript react-native