【问题标题】:How to have default imports for all my spec files in TypeScript?如何在 TypeScript 中为我的所有规范文件设置默认导入?
【发布时间】:2017-01-19 14:28:12
【问题描述】:

这是一个非常简单的规范文件,用于对 TypeScript + React 应用程序进行单元测试:

import * as React from "react"; // COMMON

import * as chai from "chai"; // COMMON
import * as chaiEnzyme from "chai-enzyme" // COMMON
import * as sinon from "sinon"; // COMMON
import * as sinonChai from "sinon-chai"; // COMMON

import { expect } from "chai"; // COMMON
import { shallow } from "enzyme"; // COMMON

import Hello from "./Hello";

describe("Hello", () => {

    chai.use(chaiEnzyme()); // COMMON
    chai.use(sinonChai); // COMMON

    let hello = shallow(<Hello name="Willson" />);

    it("should render correctly", () => {
        expect(hello).to.have.tagName("div");
    });

    it("should have correct prop values", () => {
        expect(hello).to.have.text("Hello, Willson");
    });

});

我看到自己在每个规范文件中都使用带有// COMMON 的行。 默认情况下,是否有一种 TypeScript 方法可以在我所有匹配此的文件上执行此操作:/Spec\.(ts|tsx)/

【问题讨论】:

    标签: unit-testing reactjs typescript typescript-typings


    【解决方案1】:

    您可以做一件事来稍微缓解这个问题。

    首先像这样创建你的common.ts

    //Collect and re-export all of your COMMON imports
    
    import * as React from "react"; 
    export {React};
    
    import * as ReactDOM from 'react-dom';
    export {ReactDOM};
    
    //More import/exports goes here
    

    那么在你的规范文件中你只需要一个导入:

    import * as Common from './common';
    

    稍后在 spec 文件中你可以像这样使用它们:

    private static childContextTypes = 
    {
        extender: Common.React.PropTypes.object,
        form: Common.React.PropTypes.object
    }
    

    希望这会有所帮助。

    【讨论】:

    • 不完全是我想要的...但是我已经转向 Jest 测试框架,它允许我拥有一些全局变量/函数,如 expectshould、@ 987654327@等……我的问题就解决了。
    • 我接受这个,因为如果你不能声明一些全局变量,感觉这是唯一的方法。
    猜你喜欢
    • 1970-01-01
    • 2014-03-17
    • 2021-04-07
    • 1970-01-01
    • 2022-10-18
    • 2011-08-12
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多