Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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 React中的单元测试非静态方法_Javascript_Unit Testing_Testing_Reactjs - Fatal编程技术网

Javascript React中的单元测试非静态方法

Javascript React中的单元测试非静态方法,javascript,unit-testing,testing,reactjs,Javascript,Unit Testing,Testing,Reactjs,我想为react组件中的方法编写单元测试。我希望在不渲染组件的情况下执行此操作。这是因为我不想设置完整渲染所需的所有数据。我想这样做: describe('MyList', function () { describe('fooSort', function () { it('sort strings', function () { var list = <MyList />; var result = list.fooSort(['a', '

我想为react组件中的方法编写单元测试。我希望在不渲染组件的情况下执行此操作。这是因为我不想设置完整渲染所需的所有数据。我想这样做:

describe('MyList', function () {
  describe('fooSort', function () {
     it('sort strings', function () {
      var list = <MyList />;

      var result = list.fooSort(['a', 'c', 'b'])
      expect(result).to.be.equal(['a', 'b', 'c'])
    });
  });
});
description('MyList',函数(){
描述('fooSort',函数(){
它('sort strings',function(){
var列表=;
var result=list.fooSort(['a','c','b'])
期望(结果).to.be.equal(['a','b','c'])
});
});
});
这可以通过添加fooSort作为一个静态方法来实现,但这将使该方法无法访问它。而且感觉也不对

有没有一种方法可以访问这些方法,或者这是进行此类测试的另一种方法


我知道这篇文章与:相似,但并不完全相同。

如果您使用
新MyList
而不是JSX
,这将起作用

describe('MyList', function () {
  describe('fooSort', function () {
     it('sort strings', function () {
      var list = new MyList;

      var result = list.fooSort(['a', 'c', 'b'])
      expect(result).to.be.equal(['a', 'b', 'c'])
    });
  });
});

请注意,如果它是JSX,它将被传输到
React.createElement(MyList)
,在您的情况下,它不是您想要的。

为什么不想从React使用TestUtils?这将允许您呈现组件并测试方法,因为
TestUtils。renderIntoDocument
将返回组件的一个实例,您的
fooSort()
将在该实例上可用。因为我的呈现函数需要一些必需的道具,如果不传递它们,则会失败。因此,我希望避免使用渲染方法,以避免创建道具中所需的数据。但是如果渲染是唯一的方法,我会接受你的建议。我觉得这是一个很小的代价,生成一些合适的装置,然后你就准备好了——你以后可能会需要它。你可能是对的,谢谢