如何在使用Typescript的CreateReact应用程序中使用Mocha?

如何在使用Typescript的CreateReact应用程序中使用Mocha?,typescript,mocha.js,enzyme,ts-node,Typescript,Mocha.js,Enzyme,Ts Node,我正在使用CreateReact应用程序(typescript)创建react应用程序,但我想使用mocha+酶而不是jest来测试我的react组件 在此之前,我使用的是这个测试脚本 “test”:“NODE_ENV=development mocha--watch extensions tsx--watch--require ignore style--require babel core/register./src/*.test.tsx” 但是mocha不理解我正在导入的tsx文件 测试脚

我正在使用CreateReact应用程序(typescript)创建react应用程序,但我想使用mocha+酶而不是jest来测试我的react组件

在此之前,我使用的是这个测试脚本

“test”:“NODE_ENV=development mocha--watch extensions tsx--watch--require ignore style--require babel core/register./src/*.test.tsx”

但是mocha不理解我正在导入的tsx文件

测试脚本:

“测试”:“NODE_ENV=development mocha-r babel core/register-r ts NODE/register src/*.test.tsx”

错误:

TSError: Γ¿» Unable to compile TypeScript
src\ComponentTest.test.ts (7,34): Parameter 'obj' implicitly has an 'any' 
type. (7006)
src\ComponentTest.test.ts (7,237): Property 'default' does not exist on type 
'{}'. (2339)
 at getOutput (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\ts-node\src\index.ts:330:15)
at Object.compile (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\ts-node\src\index.ts:518:11)
at Module.m._compile (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\ts-node\src\index.ts:403:43)
at loader (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\babel-register\lib\node.js:144:5)
at require.extensions.(anonymous function) (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\babel-register\lib\node.js:154:7)
at Object.require.extensions.(anonymous function) [as .ts] (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\ts-node\src\index.ts:406:12)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\mocha\lib\mocha.js:250:27
at Array.forEach (<anonymous>)
at Mocha.loadFiles (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\mocha\lib\mocha.js:247:14)
at Mocha.run (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\mocha\lib\mocha.js:576:10)
at Object.<anonymous> (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\mocha\bin\_mocha:637:18)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
import * as expect from 'chai';
import * as React from 'react'; 
import * as enzyme from 'enzyme';
import App from './App';
import * as Adapter from 'enzyme-adapter-react-16';
enzyme.configure({adapter : new Adapter()});

describe('simple test with mocha', () => {
    it('should pass' , () => {
        // tslint:disable-next-line:no-unused-expression
        expect.expect(true).to.be.true;
    });
});

describe('testing react components', () => {
   const wrapper = enzyme.shallow(<App/>);
   expect.expect(wrapper.find('div')).to.have.length(1);  
 });
t错误:Γ?无法编译TypeScript
src\ComponentTest.test.ts(7,34):参数“obj”隐式具有“any”
类型。(7006)
src\ComponentTest.test.ts(7237):类型上不存在属性“default”
'{}'. (2339)
在getOutput(E:\AssetWise\BeConnect\u AssetWiseConcet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\u modules\ts node\src\index.ts:330:15)
在Object.compile(E:\AssetWise\BeConnect\u AssetWiseConncet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\u modules\ts node\src\index.ts:518:11)
在Module.m.处编译(E:\AssetWise\BeConnect\u AssetWiseConncet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\u modules\ts node\src\index.ts:403:43)
在加载器处(E:\AssetWise\BeConnect\U AssetWiseConcet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\U modules\babel register\lib\node.js:144:5)
at require.extensions.(匿名函数)(E:\AssetWise\BeConnect\u AssetWiseConncet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\u modules\babel register\lib\node.js:154:7)
at Object.require.extensions.(匿名函数)[as.ts](E:\AssetWise\BeConnect\u assetwiseconcet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\u modules\ts node\src\index.ts:406:12)
在Module.load(Module.js:554:32)
在tryModuleLoad时(module.js:497:12)
在Function.Module.\u加载(Module.js:489:3)
at Module.require(Module.js:579:17)
根据需要(内部/module.js:11:18)
在E:\AssetWise\BeConnect\u assetwiseconcet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\u modules\mocha\lib\mocha.js:250:27
在Array.forEach()处
在Mocha.loadFiles(E:\AssetWise\BeConnect\u assetwiseconcet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\u modules\Mocha\lib\Mocha.js:247:14)
在Mocha.run(E:\AssetWise\BeConnect\u AssetWiseConncet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\u modules\Mocha\lib\Mocha.js:576:10)
反对。(E:\AssetWise\BeConnect\u assetwiseconcet\AssetWiseCONNECT\src\Client\AssetWiseCONNECT\node\u modules\mocha\bin\\u mocha:637:18)
在模块处编译(Module.js:635:30)
在Object.Module.\u extensions..js(Module.js:646:10)
在Module.load(Module.js:554:32)
在tryModuleLoad时(module.js:497:12)
在Function.Module.\u加载(Module.js:489:3)
位于Function.Module.runMain(Module.js:676:10)
启动时(bootstrap_node.js:187:16)
在bootstrap_node.js:608:3
测试文件:

TSError: Γ¿» Unable to compile TypeScript
src\ComponentTest.test.ts (7,34): Parameter 'obj' implicitly has an 'any' 
type. (7006)
src\ComponentTest.test.ts (7,237): Property 'default' does not exist on type 
'{}'. (2339)
 at getOutput (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\ts-node\src\index.ts:330:15)
at Object.compile (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\ts-node\src\index.ts:518:11)
at Module.m._compile (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\ts-node\src\index.ts:403:43)
at loader (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\babel-register\lib\node.js:144:5)
at require.extensions.(anonymous function) (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\babel-register\lib\node.js:154:7)
at Object.require.extensions.(anonymous function) [as .ts] (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\ts-node\src\index.ts:406:12)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\mocha\lib\mocha.js:250:27
at Array.forEach (<anonymous>)
at Mocha.loadFiles (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\mocha\lib\mocha.js:247:14)
at Mocha.run (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\mocha\lib\mocha.js:576:10)
at Object.<anonymous> (E:\AssetWise\BeConnect_AssetWiseConncet\AssetWiseCONNECT\src\Client\assetwiseconnect\node_modules\mocha\bin\_mocha:637:18)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
import * as expect from 'chai';
import * as React from 'react'; 
import * as enzyme from 'enzyme';
import App from './App';
import * as Adapter from 'enzyme-adapter-react-16';
enzyme.configure({adapter : new Adapter()});

describe('simple test with mocha', () => {
    it('should pass' , () => {
        // tslint:disable-next-line:no-unused-expression
        expect.expect(true).to.be.true;
    });
});

describe('testing react components', () => {
   const wrapper = enzyme.shallow(<App/>);
   expect.expect(wrapper.find('div')).to.have.length(1);  
 });
import*如“chai”所示;
从“React”导入*作为React;
从“酶”进口*作为酶;
从“./App”导入应用程序;
从'enzyme-Adapter-react-16'导入*作为适配器;
configure({adapter:newadapter()});
描述(‘摩卡咖啡简单测试’,()=>{
它('应该通过',()=>{
//tslint:禁用下一行:无未使用的表达式
期待。期待(真实)。成为真实;
});
});
描述('测试反应组件',()=>{
const wrapper=enzyme.shallow();
expect.expect(wrapper.find('div')).to.have.length(1);
});
应用程序组件:

import * as React from 'react';
import './App.css';
const logo = require('./logo.svg');

class App extends React.Component {
  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <h1 className="App-title">Welcome to React</h1>
        </header>
        <Sample/>
      </div>
    );
  }
}

export default App;
import*as React from'React';
导入“/App.css”;
const logo=require('./logo.svg');
类应用程序扩展了React.Component{
render(){
返回(
欢迎反应
);
}
}
导出默认应用程序;

您可以尝试类似的方法

import * as expect from 'chai';
describe('calculate', function() {
    let mainExpect = expect.expect;

    it('add', function() {
      let result = 5 + 2;
      mainExpect(result).equal(7);
    }); 
  });