2017-02-20 38 views
0

我有一个reactjs组件,并且该组件中有一个函数。我想为它编写单元测试用例。以下是我的单元测试用例。函数名是getNewGroupName使用karma和Jasmine的reactjs中组件的单元测试功能

describe("CreateGroupName component",() => { 

     it("Correct Copy name should be generated for first copy",() => { 
      component = ReactTestUtils.renderIntoDocument(< CreateGroupName reactor = { 
       reactor 
      } > < /CreateGroupName>); 

      expect(component.getNewGroupName("SampleGroupName")).tobe("SampleGroupName - Copy(1)") 
      }); 

     }); 

但是当我运行单元测试用例我得到以下错误

类型错误:不确定是不是(评估“e.getNewGroupName(‘SampleGroupName’)”)构造

使用调试器查看对象后,我只能看到该对象的下面的属性。

enter image description here

我也尝试过使用酶文库上述测试写入。但是两者在结果中都给了我相同的对象。

it("Correct Copy name should be generated for first copy",() => { 
      const wrapper = enzyme.mount(<CreateGroupName reactor={reactor}></CreateGroupName>); 
      const inst = wrapper.instance(); 
      expect(inst.getNewGroupName('SampleGroupName')).toBe("SampleGroupName - Copy(1)"); 
     }); 

这是我的部件

enter image description here

堆栈跟踪是如下

"TypeError: t.getNewGroupName is not a function 
    at Object.<anonymous> (http://localhost:9876/base/app/spec/webpack.loader.js:96:18873) 
    at attemptSync (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1886:24) 
    at QueueRunner.run (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1874:9) 
    at QueueRunner.execute (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1859:10) 
    at Spec.queueRunnerFactory (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:697:35) 
    at Spec.execute (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:359:10) 
    at Object.fn (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:2479:37) 
    at attemptAsync (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1916:24) 
    at QueueRunner.run (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1871:9) 
    at http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1898:16" 
+0

CreateGroupName组件是什么样子的?这通常发生在没有正确返回某些东西时。 –

+0

'.toBe()'而不是'.tobe()'怎么办? –

+0

我纠正了这个问题,但仍然无法正常工作 – Sachin

回答

0

ReactTestUtils.renderIntoDocument()呈现代表你的组件的输出的DOM节点它呈现后。请参阅https://facebook.github.io/react/docs/test-utils.html#renderintodocument

看起来您尝试调用getNewGroupName(),它是React组件上的函数,而不是渲染的DOM节点上的方法。

+0

有什么方法可以测试组件的功能吗?或者这是不可能的 – Sachin

+0

看看Jest(https://facebook.github.io/jest/)来帮助单元测试React组件。也可以看看Enzyme(http://airbnb.io/enzyme/)以获得渲染组件的帮助,然后对渲染结果进行断言。然后可以使用renderedresult.instance()。yourfunction()来调用组件上的方法。看看这里:https://github.com/airbnb/enzyme/issues/208 –

+0

如果你检查我的单元测试用例的第二个示例,我正在做同样的事情,它失败了 – Sachin

相关问题