在我的应用程序路线中,我从Ember网站上提供了有关如何渲染模式的开放和关闭的代码。https://guides.emberjs.com/v1.10.0/cookbook/user_interface_and_interaction/using_modal_dialogs/
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 undefined@ 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
两件事。
-
您正在使用过时的解决方案。您链接到的文档页面已有两年历史。
而是使用现代插件进行模态对话框。我个人更喜欢液体螺纹,但是还有许多其他解决方案。
-
您在尝试渲染某些东西时使用了单元测试。单元测试用于运行方法并检查其返回值。要测试渲染的模态对话框,您需要接受接受测试。