小编ste*_*e_c的帖子

RhinoMocks:模拟属性getter的正确方法

我是RhinoMocks的新手,除了在幕后发生的事情之外,还试图掌握语法.

我有一个用户对象,我们称之为User,它有一个名为IsAdministrator的属性.IsAdministrator的值通过另一个检查用户安全权限的类进行评估,并根据这些权限返回true或false.我正在尝试模拟此User类,并伪造IsAdministrator的返回值以隔离某些单元测试.

这就是我到目前为止所做的事情:

public void CreateSomethingIfUserHasAdminPermissions()
{
    User user = _mocks.StrictMock<User>();
    SetupResult.For(user.IsAdministrator).Return(true);

    // do something with my User object
} 
Run Code Online (Sandbox Code Playgroud)

现在,我期待Rhino会"伪造"对属性getter的调用,并且只返回真实的我.这是不正确的?目前我因为IsAdministrator属性中的依赖项而遇到异常.

有人可以解释我如何在这里实现我的目标吗?

tdd rhino-mocks

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

将字符串修剪为长度忽略HTML

这个问题很具挑战性.我们的应用程序允许用户在主页上发布新闻.该新闻是通过允许HTML的富文本编辑器输入的.在主页上,我们只想显示新闻项的截断摘要.

例如,这是我们正在显示的全文,包括HTML


为了在办公室,厨房里腾出更多的空间,我把所有随机的杯子拿出来放在午餐室的桌子上.除非你对1992年的Cheyenne Courier杯子或者1997年的BC Tel Advanced Communications杯子的所有权感到强烈,否则它们将放在一个盒子里并捐赠给比我们更需要杯子的办公室.

我们希望将新闻项目修剪为250个字符,但不包括HTML.

我们用于修剪的方法目前包括HTML,这导致一些HTML重大的新闻帖子被大大截断.

例如,如果上面的例子包含大量的HTML,它可能看起来像这样:

为了在办公室,厨房里腾出更多的空间,我已经拉了......

这不是我们想要的.

有没有人有一种标记HTML标签的方法,以保持字符串中的位置,对字符串执行长度检查和/或修剪,并恢复字符串中旧的位置的HTML?

html string truncate tokenize

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

JQuery JavaScript设计:自我执行功能还是对象文字?

我很好奇在构造封装代码块时是否有与JQuery相关的最佳实践.

通常,当我构建一个页面时,我喜欢将该页面中使用的函数封装在一个对象中.这允许我在构建应用程序时进行一些封装.没有什么比讨论一堆JavaScript文件更讨厌了

function doSomethingOnlyRelevantOnThisPage() {
    // do some stuff
}
Run Code Online (Sandbox Code Playgroud)

我这使得设计混乱,并没有很好地封装功能.

通常在许多框架中,有一个标准用于执行此封装.

在Mootools中,他们喜欢Object Literal Notation:

var Site = {        
    // properties and methods
}
Run Code Online (Sandbox Code Playgroud)

在YUI中,他们喜欢自执行函数表示法:

(function() { // properties and methods })()
Run Code Online (Sandbox Code Playgroud)

第二个例子的好处是创建了一个闭包,从而允许你定义私有属性和方法.

我的问题是:任何JQuery爱好者都有创建这些干净封装结构的最佳实践吗?使用它们的理由是什么?

javascript jquery

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

在客户端将服务器端变量传递给JavaScript的最佳方法是什么?

我们的应用程序使用了很多配置选项.这些选项需要以用户首选项,站点范围首选项等形式反映在客户端.

目前,我们以JSON的形式将服务器端设置传递到客户端,JSON存储在特定元素的标记中的自定义属性中(不,我们的应用程序目前不担心W3C验证).然后,我们从custom属性中检索数据,并将其解析为JSON对象,以便在脚本中使用jQuery.

这样做的一个缺点是引用事件处理程序中元素的属性.我知道这是不赞成的,因为它可以创建循环引用,随后内存泄漏.我更喜欢使用jQuery的数据函数,但是你不能在页面渲染时从服务器端调用它.

在这种情况下,其他人都做了什么?

javascript

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

带有绝对定位子的jQuery UI对话框部分隐藏了溢出的子节点

我有一个标准的jQuery UI对话框.在该对话框中,我有一个自定义的jQuery UI按钮,允许我为日历事件选择一个事件类型.我正在使用jQuery UI位置实用程序来绝对定位包含可用事件类型列表的div,如图中所示.

显示事件类型div时,任何比可用空间长的内容都会在对话框的边缘消失.如果它是一个iframe,或者如果绝对定位的父级具有更高的z-index,我会期望这个.但是,jQuery UI对话框是一个简单的绝对定位div,其z-index为1002(默认值),我的widget显示事件类型的div是一个绝对定位的div,其z-index为1003.我希望我的div在堆叠顺序中会占据更高的优先级.

我的问题是:这里发生了什么?为什么我的div被对话框的底边隐藏?

问题截图

jquery dialog jquery-ui z-index css-position

6
推荐指数
1
解决办法
1005
查看次数

在现有系统上重构可测试性

我加入了一个专注于产品的团队.该产品已存在约5年左右,并使用ASP.NET WebForms.它的原始架构随着时间的推移逐渐消失,整个解决方案中的事情变得相对混乱.这绝不是可怕的,但绝对可以使用一些工作; 你们都知道我的意思.

自从大约6个月前进入项目团队以来,我一直在进行一些重构.其中一些重构很简单,Extract Method,Pull Method Up等等.有些重构更具结构性.后者的变化让我感到紧张,因为没有一套全面的单元测试来配合每个组件.

整个团队都需要通过重构来进行结构更改,但是我们的项目经理表达了一些担忧,即我们没有足够的测试来进行重构,并确信我们没有将回归错误引入系统.他希望我们首先编写更多测试(针对现有架构),然后执行重构.我的论点是系统的类结构与编写足够的测试过于紧密耦合,并且在我们执行重构时使用更多的测试驱动方法可能会更好.我的意思是不是针对现有组件编写测试,而是编写针对特定功能需求的测试,然后重构现有代码以满足这些需求.

有没有人对最佳行动方案有什么经验?我有自己的想法,但希望听到社区的一些意见.

asp.net refactoring automated-tests

5
推荐指数
1
解决办法
662
查看次数

有谁知道Razor,Spark和NVelocity视图引擎之间的性能差异?

有没有人有任何性能数字可以比较ASP.NET MVC3的各种viewengine实现?具体来说,我对Razor,Spark和NVelocity之间的性能差异感兴趣.我意识到最后一点有点过时,但我们用它来生成电子邮件,并想用RazorEngine替换它.

NVelocity曾经在当时很快,但我现在对其性能的怀疑与其他更现代的视觉引擎相比.

任何见解将不胜感激.

asp.net performance razor asp.net-mvc-3

5
推荐指数
1
解决办法
945
查看次数

高效克隆缓存的对象

我们有一个应用程序,它对数据对象进行比较,以确定对象的一个​​版本是否与另一个版本不同.我们的应用程序还对这些对象进行了一些广泛的缓存,在进行这些比较时,我们遇到了一些性能问题.

这是工作流程:

  1. 数据项1是内存中的当前项.此项最初是从缓存中检索并进行深度克隆(所有子对象,如字典等).然后编辑数据项1,并修改其属性.
  2. 然后,我们将此对象与存储在缓存中的原始版本进行比较.由于数据项1已克隆且其属性已更改,因此这些对象应该不同.

这里有几个问题.

主要问题是我们的深度克隆方法非常昂贵.我们对浅色克隆进行了分析,速度慢了10倍.那是废话.这是我们深度克隆的方法:

    public object Clone()    
    {
        using (var memStream = new MemoryStream())
        {
            var binaryFormatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
            binaryFormatter.Serialize(memStream, this); 
            memStream.Seek(0, SeekOrigin.Begin);
            return binaryFormatter.Deserialize(memStream);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我们最初使用以下内容进行克隆:

public object Clone()
{
    return this.MemberwiseClone();
}
Run Code Online (Sandbox Code Playgroud)

这样做效率更高,但是因为它做了浅层克隆,所有复制对象(这些对象的属性,如字典等)都没有被克隆.该对象仍将包含与缓存中的对象相同的引用,因此在比较时属性将相同.

那么,有没有人有一种有效的方法在C#对象上进行深度克隆,这将克隆整个对象图?

c# performance clone deep-copy

3
推荐指数
1
解决办法
2928
查看次数

git add 我的遥控器用于推送子模块

我有一个存储在 git 中的主应用程序在该应用程序中,我们使用托管在github上的第三方组件。我们对此组件进行了大量自定义,因此认为为了使更新更容易,我们应该将该组件添加为子模块。

据我了解,通过将此组件添加为子模块,我们将能够从github 提取上游更改并将其合并到我们的子模块中。然后我们会将这些更改推送到我们的git 中。

我成功地将组件添加为子模块,并将其克隆到我的应用程序的目录中。我已经合并了所有修改,并在本地提交了这些修改。

我的问题是,现在如何将 git 添加为子模块的远程,以便我可以将所有自定义推送到该服务器?

git git-submodules

0
推荐指数
1
解决办法
582
查看次数