2017-02-27 80 views
0

在我的应用程序路线中,我提供了有关如何呈现模态的打开和关闭的来自ember网站的代码。 https://guides.emberjs.com/v1.10.0/cookbook/user_interface_and_interaction/using_modal_dialogs/适用于在应用程序路径中呈现模态的Qunit

export default Ember.Route.extend({ 
    actions: { 
     openModal: function(name, controllerName) { 
     this.render(name, { 
      into: 'application', 
      outlet: 'modal', 
      controller: controllerName 
     }); 
     }, 
     closeModal: function() { 
     this.disconnectOutlet({ 
      outlet: 'modal', 
      parentView: 'application' 
     }); 
     } 
    } 
}); 

我一直在试图找到如何做的呈现操作单元测试的例子,但无法找到多的文档。

在我的应用程序路线的单元测试中,仅仅是为了触发路线上的动作,看看会发生什么,这是我拥有的和我得到的错误。感谢您提供任何可能提供的指导。

test('route open modal', function(assert) { 
    let route = this.subject(); 
    route.send('openModal', 'cancel-modal'); 
    assert.ok(route); 
}); 


Died on test #1  at Module.callback (http://localhost:4200/exampleApp/assets/tests.js:1113:24) 
    at Module.exports (http://localhost:4200/exampleApp/assets/vendor.js:140:32) 
    at requireModule (http://localhost:4200/exampleApp/assets/vendor.js:32:18) 
    at TestLoader.require (http://localhost:4200/exampleApp/assets/test-support.js:7124:7) 
    at TestLoader.loadModules (http://localhost:4200/exampleApp/assets/test-support.js:7116:14) 
    at Function.TestLoader.load (http://localhost:4200/exampleApp/assets/test-support.js:7146:22) 
    at http://localhost:4200/exampleApp/assets/test-support.js:7030:18: Cannot read property 'state' of [email protected] 31 ms 
Source:  
TypeError: Cannot read property 'state' of undefined 
    at parentRoute (http://localhost:4200/exampleApp/assets/vendor.js:41309:64) 
    at buildRenderOptions (http://localhost:4200/exampleApp/assets/vendor.js:41371:27) 
    at Class.render (http://localhost:4200/exampleApp/assets/vendor.js:41191:27) 
    at Class.openModal (http://localhost:4200/exampleApp/assets/exampleApp.js:1118:14) 
    at Class.send (http://localhost:4200/exampleApp/assets/vendor.js:40471:39) 
    at Class.superWrapper [as send] (http://localhost:4200/exampleApp/assets/vendor.js:54491:22) 
    at Object.<anonymous> (http://localhost:4200/exampleApp/assets/tests.js:1115:11) 
    at runTest (http://localhost:4200/exampleApp/assets/test-support.js:3471:30) 
    at Test.run (http://localhost:4200/exampleApp/assets/test-support.js:3457:6 

回答

0

两件事。

  1. 您正在使用过时的解决方案。您链接的文档页面已有两年历史了。

    相反,使用现代的插件模式对话框。我个人更喜欢liquid-tether,但有many other solutions available

  2. 您正在使用单元测试,同时尝试呈现一些东西。单元测试用于运行方法并检查它们的返回值。要测试渲染的模态对话框,您需要进行验收测试。

相关问题