当事件和处理程序位于不同的组件中时,如何测试组件的事件?

时间:2018-11-26 09:32:34

标签: salesforce lightning

在参考茉莉花测试资源中,组件事件(egComponentEvent)的注册和处理程序是在同一组件(egEventHandling)中完成的。因此,我们能够在事件触发后测试结果。

https://github.com/forcedotcom/LightningTestingService/blob/master/lightning-component-tests/test/default/staticresources/jasmineExampleTests.resource

/**
     * Component under test: 'c:egEventHandling'
     * This spec shows how to validate a component's handling of component- and
     * application-level events.
     */
    describe('c:egEventHandling', function() {
        it('handles component- and application-level events', function(done) {
            $T.createComponent("c:egEventHandling", null)
            .then(function(component){
                var cmpEvent = component.getEvent("sampleEvent");
                cmpEvent.setParams({"data":"component event fired"});
                cmpEvent.fire()
                expect(component.get("v.message")).toBe("component event fired");
                $T.fireApplicationEvent("c:egApplicationEvent", {"data":"application event fired"});
                expect(component.get("v.message")).toBe("application event fired");
                done();
            }).catch(function(e) {
                done.fail(e);
            });
        });
    });

当在不同组件中完成事件注册及其处理程序时,触发组件事件后测试结果的问题。

我们在组件1中触发了一个组件级事件,并且在组件2中调用了处理程序,

我们正在努力测试组件事件,因为当组件被触发时,我们无法看到在组件2中调用的处理程序

请帮助我们为以下代码获取正确的解决方案

 $T.createComponent("c:tagr_Tag",attributes,true) 
  .then(function(component) {
  var evt = component.getEvent('componentEvent');
  evt.setParam('entity', entity);  
  evt.fire();
expect(evt.fire()).tobe.(true);
}

这里是从tagr_Tag触发的事件,但是没有从其他组件调用处理程序。请使用spyon等方法帮助我们到达解决方案。 在此先感谢

0 个答案:

没有答案