我使用jsTree插件在我的产品中渲染大量的树节点.
现在我正在迁移到Ember,需要在Ember中实现jsTree插件.
我写了一个Ember组件来使用jsTree渲染我的文件夹结构.
我的组件:
<script type="text/x-handlebars" data-template-name="components/temp-tree">
<div id="treediv">Tree Data</div>
</script>
App.TempTreeComponent = Ember.Component.extend({
didInsertElement: function(){
var self = this;
self.$().jstree({
'plugins':["contextmenu", "dnd"],
'core' : {
'data' : [
'Simple root node',
{
'text' : 'Root node 2',
'state' : {
'opened' : true,
'selected' : true
},
'children' : [
{'text' : 'Child 1'},
'Child 2'
]
}
],
'check_callback': true
}
})
.on('rename_node.jstree', function(e, data) {
alert('rename');
})
.on('delete_node.jstree', function(e, data) {
alert('delete');
});
},
actions: …Run Code Online (Sandbox Code Playgroud) 我是单元测试一个Angular指令,并希望以某种方式模拟或存根单元测试中指定控制器的实例化.
所以首先我想一些代码......
'use strict';
angular.module('App.Directives.BreadCrumbs', [])
.directive('kxBreadcrumbs', function () {
return {
restrict: 'E',
controller: 'BreadCrumbsController',
template:
'<!-- Breadcrumbs Directive HTML -->' +
'<ol class="breadcrumb">' +
' <li ng-repeat="crumb in crumbPath">' +
' <a ng-class="{true: \'disable\', false: \'\'}[crumb.last]" href="{{crumb.href}}" ng-click="updateCrumb(crumb.name)">{{crumb.name}}</a>' +
' </li>' +
'</ol>' +
'<!-- End of Breadcrumbs Driective HTML -->'
};
});
Run Code Online (Sandbox Code Playgroud)
这是我将单元测试的一个示例指令,重要的是要从中获取命名控制器.
所以在我的单元测试中
'use strict';
describe('Directives: Breadcrumbs', function () {
var//iable declarations
elm,
scope,
$rootScope
;
beforeEach(function () {
module('App.Directives.BreadCrumbs');
module('App.Controllers.BreadCrumbs');
module('App.Constants'); // <--- Comes from …Run Code Online (Sandbox Code Playgroud) 在Angular中,一切似乎都有一个陡峭的学习曲线,单元测试Angular应用程序肯定不会逃避这种范式.
当我开始使用TDD和Angular时,我觉得我花了两倍(或许更多)时间来确定如何测试,甚至更多只是让我的测试设置正确.但正如Ben Nadel在他的博客中所说,角度学习过程中有起伏.他的图表绝对是我对Angular的体验.
然而,随着我在学习Angular和单元测试方面取得了进展,现在我觉得我花费的时间少得多,设置测试的时候还有更多的时间让测试从红色变为绿色 - 这是一种很好的感觉.
所以我遇到了不同的方法来设置我的单元测试以模拟服务和承诺,我想我会分享我所学到的知识,并且还会问以下问题:
有没有其他或更好的方法来实现这一目标?
所以在代码上,无论如何我们都来这里 - 不是听一些人谈论他的爱,错误的成就学习框架.
这就是我开始嘲笑我的服务和承诺的方式,我将使用一个控制器,但服务和承诺显然可以在其他地方嘲笑.
describe('Controller: Products', function () {
var//iable declarations
$scope,
$rootScope,
ProductsMock = {
getProducts: function () {
} // There might be other methods as well but I'll stick to one for the sake of consiseness
},
PRODUCTS = [{},{},{}]
;
beforeEach(function () {
module('App.Controllers.Products');
});
beforeEach(inject(function ($controller, _$rootScope_) {
//Set up our mocked promise
var promise = { then: jasmine.createSpy() };
//Set up our scope
$rootScope …Run Code Online (Sandbox Code Playgroud) 如果您最近通过凉亭更新了restangular,它将安装最新的lodash - 新的4.0.然而这是一个问题,因为restangular/angular现在抛出错误 - "_.contains()不是函数."
你怎么解决?
基于脚手架mern.io我正在通过代码看看发生了什么.我偶然发现了一个.need方法,它看起来像是与es6类相关的东西.我似乎无法在任何地方找到任何可用的信息,所以我问这个.need方法是什么?
class PostContainer extends Component {
//do class setup stuff here
}
PostContainer.need = [() => { return Actions.fetchPosts(); }];
Run Code Online (Sandbox Code Playgroud)
您可以使用这些命令轻松启动和运行项目.
npm install -g mern-cli
mern YourAppName
Run Code Online (Sandbox Code Playgroud) 我想验证伪元素的文本内容.承诺从使用中返回ptor.executeScript("window.getComputedStyle(jQuery('.my-class')[0], ':after').content").then(function(data){
console.log(arguments) // {'0':null}
});
我也试过在预期中放弃它,但我猜这是因为同样的原因失败了.
既然CSS声明指向了元素的一个属性,我应该尝试读取该属性吗?
javascript ×6
angularjs ×4
jasmine ×2
unit-testing ×2
e2e-testing ×1
ember.js ×1
jquery ×1
jstree ×1
karma-runner ×1
lodash ×1
mern ×1
protractor ×1
reactjs ×1
redux ×1
restangular ×1
testing ×1