小编Tor*_*ups的帖子

使用jasmine点击事件调用如何断言间谍?

我正在写一个简单的点击处理程序,需要传入的事件(如此)

Thing = function($){

    var MyObject = function(opts){
        this.opts = opts;
    };

    MyObject.prototype.createSomething = function(){
        var that = this;
        $('#some_dom_element').live('click', function(e) {
            that.doStuff(e);
        });
    };

    MyObject.prototype.doStuff = function(e) {
        //do some javascript stuff ...
        e.preventDefault();
    };

    return MyObject;

}(jQuery);
Run Code Online (Sandbox Code Playgroud)

目前在我的jasmine规范中,我有一些东西可以监视我期望被调用的函数(但是因为它被调用e -not而没有args-我的断言失败了)

    it ("live click handler added to the dom element", function(){
        var doSpy = spyOn(sut, 'doStuff');
        sut.createSomething();
        $("#some_dom_element").trigger('click');
        expect(doSpy).toHaveBeenCalledWith();
    });
Run Code Online (Sandbox Code Playgroud)

我如何纠正这个"toHaveBeenCalledWith"按照我的预期工作?


UPDATE

我无法按原样获得接受的答案,但我能够稍微改变它,以下是我100%工作的例子

    it ("should prevent default on click", function(){
        var event = {
            type: 'click',
            preventDefault: function () {} …
Run Code Online (Sandbox Code Playgroud)

javascript dom-events jasmine jasmine-jquery

12
推荐指数
1
解决办法
2万
查看次数

使用.NET 2.0+进行分布式缓存?

使用.NET实现分布式缓存的最佳方法是什么?

编辑:我正在寻找内部和外部应用程序的通用缓存模式

asp.net caching distributed-caching

11
推荐指数
0
解决办法
2186
查看次数

Micro Code Generation被认为是有害的吗?

我最近编写了一个小工具,为每个层级生成一个类,我为无聊的"数据形式"工作编写,我花费了近90%的时间(令人沮丧,我知道)...随着经济的改善,更多关于这一点; )

我的问题是 - 使用这个工具而不是手工打字所有这些代码日复一日实际上伤害了我作为开发人员?我觉得我总是会对这个工具进行更改,因此我"应该"保持在所使用的模式/选择等等之上......但是我的一小部分感觉我可能会失去优势......我错了?

code-generation

11
推荐指数
3
解决办法
1026
查看次数

使用Post-Build事件在.NET 2.0+中使用MS Test执行单元测试

我正在尝试在.NET 3.5中设置一个后期构建事件,该事件将运行一套带MS测试的单元测试.我发现这篇文章展示了如何使用MbUnit调用bat文件,但是我想知道是否有人用MS Test做过这种类型的事情?

如果是这样,我会对bat文件的样子感兴趣

build-process unit-testing mstest

10
推荐指数
2
解决办法
6124
查看次数

我们讨厌经典asp的东西,但今天仍然存在于webforms中

我正在研究我的团队从webforms转移到MVC的原因列表,我认为一个好的起点是展示"为什么我们应该迁移",其中包括经典的asp和webforms都有的共同点.

如:

通心粉代码(SRP违规的)

传统的ASP -每个.asp文件感觉就像泥的大球
Web表单 -泥的这个大球从视图中臭名昭著的"代码隐藏"去

请记住,我的开发人员不是实现类似MVP的类型,而不是被推送,这是我喜欢MVC的原因之一(尽管保持控制器很薄将是一种学习体验)

更新 我知道您可以在任何平台上创建任何语言的混乱.我也知道MVC无法解决这个问题.我也意识到需要做一些真正的指导才能让团队写一个烂摊子来理解为什么这很难维护.但我觉得这个机会让我能够表达对SOC /责任驱动设计/可测试性等的需求.

关于使用webforms编写更易维护的软件:根据我在webforms中实现MVP等表示模式以尊重SRP /增加可维护性/启用单元测试等的经验比开箱即用的MVC要多得多(并且你得到相同的结果) ).它是否有效 - 是的,过去我采用这种方法取得了成功.但是,如果我能够利用更加自然的方法来进行平台上的Web开发,我会的.

我一直在寻找有人指出平均9-5开发人员"想要"在他们编写经典asp之后远离的事情,但是在他们进入we​​bforms后从未完成过.(再一次 - 我工作的大多数开发人员只是把他们在经典asp中抱怨的混乱局面转移到后面的代码中,并且"认为"这是朝着正确方向迈出的一步).

asp.net asp.net-mvc webforms asp-classic

10
推荐指数
3
解决办法
510
查看次数

谷歌飞镖产生ES5友好的JavaScript,今天包括或排除IE8吗?

我正在做一些研究,看看目前谷歌飞镖的实现是否与IE8友好.我们的团队必须支持IE8一段时间,我试图找出今天使用dart生成的javascript是否适用于这个传统浏览器.

dart转换器是否像coffeescript一样输出javascript?

最后飞镖产生ES5友好的JavaScript?

javascript internet-explorer-8 dart

10
推荐指数
1
解决办法
1303
查看次数

ember-data真的支持嵌套的URL吗?

我有一个顶级会话对象,下面可以有很多发言者.

我的REST ish端点允许我像这样获得所有会话

/会话/

我可以像这样得到给定会话的所有发言者

/会话/ 1 /扬声器/

使用当前版本的ember-data,我可以看到它正在尝试使用此url查找所有扬声器

/扬声器/

使用下面的数据模型

CodeCamp.Session = DS.Model.extend({
  id: DS.attr('number'),
  name: DS.attr('string'),
  speakers: DS.hasMany('CodeCamp.Speaker',{nested: true})                                                          
});

CodeCamp.Speaker = DS.Model.extend({
  id: DS.attr('number'),
  name: DS.attr('string'),
  session: DS.belongsTo('CodeCamp.Session',{nested: true})
});
Run Code Online (Sandbox Code Playgroud)

我添加了"嵌套:true"部分,因为我想要构建所需的ember-data

/会话/%@ /扬声器/

但这没有发生 -

我知道我可以手动定义一个URL

CodeCamp.Speaker.reopenClass({
  url: 'sessions/%@/speakers/'
});
Run Code Online (Sandbox Code Playgroud)

但是这样做我需要在基础REST适配器中滚动我自己的"buildURL"方法,以便它查找这样的格式并在必要时添加父ID(如果可能的话我宁愿不这样做)

ember-data是否支持这样的开箱即用或者我自己会被迫编写大量代码?

ember.js ember-data

10
推荐指数
1
解决办法
2355
查看次数

什么是"强迫"模型钩子射击的最佳方法是什么?

我正在使用ember.js 1.2,我的一条路线有一个非常动态的模型.当我第一次跳到路线或当我粘贴网址的模型钩子的URL时,然后设置控制器触发,一切按预期工作.

当我稍后进入路径(但不是直接来自url)时会出现问题 - 这只会触及setupController挂钩(并且模型方法永远不会触发).但从技术上讲,改变的是url(和父模型).使用此模型,它主要是从父模型定义的(使用该父模型在运行时获取一组新的动态配置).

那么每次加载这个特定的路由时,如何强制setupController重新执行模型钩子?(好像模型方法每次都要开火).

或者......我应该在setupController中获取这个动态模型,并通过让它返回一个空对象来保持模型钩子无逻辑吗?

更新

App.ChildIndexRoute = Ember.Route.extend(App.ModelMixin, {
  setupController: function(controller, model) {
    this._super(controller, model);
    var parent = this.modelFor('parent');
    return this.getForParent(parent).then(function(things) {
      controller.set('model', things);
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

ember.js

10
推荐指数
1
解决办法
2955
查看次数

如何在ember.js模板中使用自动对焦?

我有一个简单的ember.js文本字段,我正在尝试添加自动对焦

{{view PersonApp.SearchField placeholder="search..." valueBinding="searchText"}}

PersonApp.SearchField = Ember.TextField.extend({

});
Run Code Online (Sandbox Code Playgroud)

我可以在javascript中添加它还是像模板本身中的属性一样简单?

handlebars.js ember.js

9
推荐指数
3
解决办法
6050
查看次数

如何在npm模块中引用本地文件?

我写了一个简单的npm模块来预编译我的把手模板,当使用django压缩器对一些客户端组件进行后处理时,发现我需要发送带有几个js文件的npm模块.

目前我只是假设没有人用全局标志安装它,因为我已经"硬编码"了npm模块本身中这些依赖项的路径

我的npm模块的示例布局

/
*/bin
*/lib/main.js
*/vendor/ember.js

现在在main.js中我想使用ember.js文件...目前我的硬编码方法看起来像这样

var emberjs = fs.readFileSync('node_modules/django-ember-precompile/vendor/ember.js', 'utf8');
Run Code Online (Sandbox Code Playgroud)

再次 - 这只有效,因为我假设你在本地安装它,但我想认为node.js有更合法的方式来获取本地嵌入文件

任何人都知道如何改善这一点,使其更加"全球化"友好?

node.js npm

9
推荐指数
1
解决办法
2763
查看次数