如何在Mithril中对具有视图模型依赖关系的视图进行单元测试
How can I unit test a view with a view-model dependency in Mithril?
我想知道如何在以下代码中对视图进行单元测试:
require('mithril');
var practice = {};
practice.vm = {
init: function() {
this.modules = [
{ name: '1' },
{ name: '2' },
{ name: '3' }
]
}
};
practice.controller = function() {
practice.vm.init();
};
practice.view = function(controller) {
return [
m('h1'),
practice.vm.modules.map(function(module) {
return m('.module', [ m('.module-name', module.name) ]);
})
];
};
module.exports = practice;
我目前有以下测试:
var chai = require('chai').should();
var practice = require('../../app/modules/practice.module');
var query = require('mithril-query');
describe('view', function() {
it('shows all the modules along with their names', function() {
// TODO: Mock view-model here somehow!
//
// I would like "practice.vm.modules" to return a stubbed
// response so that I can test this behavior in isolation.
var view = query(practice.view({}));
view.find('.module').length.should.equal(3);
view.find('.module .module-name')[0].children[0].should.equal('Bashing');
view.find('.module .module-name')[1].children[0].should.equal('Smashing');
view.find('.module .module-name')[2].children[0].should.equal('Whapping');
});
});
感谢您的指导!在我看来,唯一的方法是通过practice.vm
,但我不确定如何使用Mithril。
您可以将视图模型数据结构设置为所需状态:
var chai = require('chai').should();
var practice = require('../../app/modules/practice.module');
var query = require('mithril-query');
describe('view', function() {
it('shows all the modules along with their names', function() {
//store current state
var vm = practice.vm
//setup test state
practice.vm = {modules: [
{name: "Bashing"},
{name: "Smashing"},
{name: "Whapping"}
]};
//test
var view = query(practice.view({}));
view.find('.module').length.should.equal(3);
view.find('.module .module-name')[0].children[0].should.equal('Bashing');
view.find('.module .module-name')[1].children[0].should.equal('Smashing');
view.find('.module .module-name')[2].children[0].should.equal('Whapping');
//teardown - restore original state
practice.vm = vm
});
});
相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 如何使用javascript从主svg对象动态创建svg视图框
- 正在使用$location.path(.)路由ng视图
- angular.js没有'无法在PhoneGap中处理视图标记
- 如何包含特定于每个视图angularjs的javascript文件
- 如何在Knockout.js中选中复选框时更新视图模型及其依赖项
- 嵌套依赖主干.js具有 require.js 主干的视图.js导致视图作为对象而不是函数加载
- 视图模型内存泄漏 - 摆脱循环依赖
- 如何在状态管理器视图控制器中传递已解析的依赖项
- 删除对backline.router和视图的jquery/zepto依赖关系
- 如何指定Kohana PHP部分视图CSS和JS依赖关系
- 如何在Mithril中对具有视图模型依赖关系的视图进行单元测试
- 推迟或暂停敲除中的依赖项评估,直到视图模型完全更新(例如使用映射插件)
- 如何在Backbone.js中使用嵌套视图解决循环依赖关系
- React router -带依赖的视图
- 我如何构建正确的视图模型(与多个依赖关系)在KnockoutJS
- 具有两个视图模型的依赖可观察对象
- 只有在加载主干视图时才需要依赖项
- 模型视图控制器 - JavaScript 状态到函数序列处理(MVC,依赖函数)
- 模型视图控制器 - 是否有任何没有外部依赖项的 JavaScript MVC 框架