Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “上的单元测试”;反应+;“反应路线”;堆栈_Javascript_Unit Testing_Testing_Tdd_Reactjs - Fatal编程技术网

Javascript “上的单元测试”;反应+;“反应路线”;堆栈

Javascript “上的单元测试”;反应+;“反应路线”;堆栈,javascript,unit-testing,testing,tdd,reactjs,Javascript,Unit Testing,Testing,Tdd,Reactjs,我已经阅读了许多关于如何通过react路由器组件渲染路由的建议,但我仍然无法使其工作。我尝试使用github代码库搜索来查找它,但仍然没有成功。在这一点上,我只需要一个工作示例 ,但也许这并不重要。我只想看一些react-route单元测试的工作示例。我在找到 我没有使用Object.assign来创建路由器存根,而是使用sinon.js来创建更好的存根函数,为测试返回适当的值 编辑:再次查看您的样板文件,发现您的存根路由器是从同一示例中借用的。很抱歉那么你到底在哪里被卡住了 再次编辑:我不是在

我已经阅读了许多关于如何通过react路由器组件渲染路由的建议,但我仍然无法使其工作。我尝试使用github代码库搜索来查找它,但仍然没有成功。在这一点上,我只需要一个工作示例


,但也许这并不重要。我只想看一些react-route单元测试的工作示例。

我在找到

我没有使用Object.assign来创建路由器存根,而是使用sinon.js来创建更好的存根函数,为测试返回适当的值

编辑:再次查看您的样板文件,发现您的存根路由器是从同一示例中借用的。很抱歉那么你到底在哪里被卡住了

再次编辑:我不是在开玩笑,所以这里是我需要解决测试难题的其他部分:

  • 如果您正在使用browserify,并且想要在纯摩卡咖啡中进行测试(无需构建),则需要破解
    require
    来为您编译jsx:
  • var fs=require(“fs”);
    var reactTools=需要(“reactTools”);
    require.extensions[“.jsx”]=函数(模块,文件名){
    var jsxContent=fs.readFileSync(filename.toString();
    var jsContent=reactTools.transform(jsxContent);
    返回模块。\u编译(jsContent,filename);
    };
    
  • 你需要一个假DOM。JSDOM简直太可怕了。我用
    domino
    实现了它
  • var domino=require(“domino”);
    global.window=domino.createWindow();
    global.document=global.window.document;
    //设置节点_ENV,以便我们可以调用'render'。
    //否则,我们将从react获得一个关于服务器呈现的错误:(
    process.env.NODE_env=“测试”;
    
  • 然后,您可以通过存根路由器要求组件进入,并使用
    React.render()
    将组件渲染到DOM节点中:
  • var MyComponent=fakeRouter(require(“./MyComponent.jsx”); var component=React.render( , 文件正文 ); node=component.getDOMNode(); //我使用'zepto node'和'chai jq'对我的组件进行断言 执行此操作的方法(在v4中可能是新的)是将正在测试的组件包装在react router提供的
    MemoryRouter

    import {MemoryRouter} from 'react-router-dom';
    import {render} from 'react-dom';
    
    render(<MemoryRouter>
      <YourComponent>
    </MemoryRouter>, node, () => {});
    
    从'react router dom'导入{MemoryRouter};
    从'react dom'导入{render};
    渲染(
    ,节点,()=>{});
    
    你到底在哪里卡住了?检查我的,虽然我使用alt作为flux的flux实现,但alt可以引导反应路由器历史并将其映射到服务器上。