我是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属性中的依赖项而遇到异常.
有人可以解释我如何在这里实现我的目标吗?
这个问题很具挑战性.我们的应用程序允许用户在主页上发布新闻.该新闻是通过允许HTML的富文本编辑器输入的.在主页上,我们只想显示新闻项的截断摘要.
例如,这是我们正在显示的全文,包括HTML
为了在办公室,厨房里腾出更多的空间,我把所有随机的杯子拿出来放在午餐室的桌子上.除非你对1992年的Cheyenne Courier杯子或者1997年的BC Tel Advanced Communications杯子的所有权感到强烈,否则它们将放在一个盒子里并捐赠给比我们更需要杯子的办公室.
我们希望将新闻项目修剪为250个字符,但不包括HTML.
我们用于修剪的方法目前包括HTML,这导致一些HTML重大的新闻帖子被大大截断.
例如,如果上面的例子包含大量的HTML,它可能看起来像这样:
为了在办公室,厨房里腾出更多的空间,我已经拉了......
这不是我们想要的.
有没有人有一种标记HTML标签的方法,以保持字符串中的位置,对字符串执行长度检查和/或修剪,并恢复字符串中旧的位置的HTML?
我很好奇在构造封装代码块时是否有与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爱好者都有创建这些干净封装结构的最佳实践吗?使用它们的理由是什么?
我们的应用程序使用了很多配置选项.这些选项需要以用户首选项,站点范围首选项等形式反映在客户端.
目前,我们以JSON的形式将服务器端设置传递到客户端,JSON存储在特定元素的标记中的自定义属性中(不,我们的应用程序目前不担心W3C验证).然后,我们从custom属性中检索数据,并将其解析为JSON对象,以便在脚本中使用jQuery.
这样做的一个缺点是引用事件处理程序中元素的属性.我知道这是不赞成的,因为它可以创建循环引用,随后内存泄漏.我更喜欢使用jQuery的数据函数,但是你不能在页面渲染时从服务器端调用它.
在这种情况下,其他人都做了什么?
我有一个标准的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被对话框的底边隐藏?
我加入了一个专注于产品的团队.该产品已存在约5年左右,并使用ASP.NET WebForms.它的原始架构随着时间的推移逐渐消失,整个解决方案中的事情变得相对混乱.这绝不是可怕的,但绝对可以使用一些工作; 你们都知道我的意思.
自从大约6个月前进入项目团队以来,我一直在进行一些重构.其中一些重构很简单,Extract Method,Pull Method Up等等.有些重构更具结构性.后者的变化让我感到紧张,因为没有一套全面的单元测试来配合每个组件.
整个团队都需要通过重构来进行结构更改,但是我们的项目经理表达了一些担忧,即我们没有足够的测试来进行重构,并确信我们没有将回归错误引入系统.他希望我们首先编写更多测试(针对现有架构),然后执行重构.我的论点是系统的类结构与编写足够的测试过于紧密耦合,并且在我们执行重构时使用更多的测试驱动方法可能会更好.我的意思是不是针对现有组件编写测试,而是编写针对特定功能需求的测试,然后重构现有代码以满足这些需求.
有没有人对最佳行动方案有什么经验?我有自己的想法,但希望听到社区的一些意见.
有没有人有任何性能数字可以比较ASP.NET MVC3的各种viewengine实现?具体来说,我对Razor,Spark和NVelocity之间的性能差异感兴趣.我意识到最后一点有点过时,但我们用它来生成电子邮件,并想用RazorEngine替换它.
NVelocity曾经在当时很快,但我现在对其性能的怀疑与其他更现代的视觉引擎相比.
任何见解将不胜感激.
我们有一个应用程序,它对数据对象进行比较,以确定对象的一个版本是否与另一个版本不同.我们的应用程序还对这些对象进行了一些广泛的缓存,在进行这些比较时,我们遇到了一些性能问题.
这是工作流程:
这里有几个问题.
主要问题是我们的深度克隆方法非常昂贵.我们对浅色克隆进行了分析,速度慢了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#对象上进行深度克隆,这将克隆整个对象图?
我有一个存储在 git 中的主应用程序。在该应用程序中,我们使用托管在github上的第三方组件。我们对此组件进行了大量自定义,因此认为为了使更新更容易,我们应该将该组件添加为子模块。
据我了解,通过将此组件添加为子模块,我们将能够从github 提取上游更改并将其合并到我们的子模块中。然后我们会将这些更改推送到我们的git 中。
我成功地将组件添加为子模块,并将其克隆到我的应用程序的目录中。我已经合并了所有修改,并在本地提交了这些修改。
我的问题是,现在如何将 git 添加为子模块的远程,以便我可以将所有自定义推送到该服务器?
asp.net ×2
javascript ×2
jquery ×2
performance ×2
c# ×1
clone ×1
css-position ×1
deep-copy ×1
dialog ×1
git ×1
html ×1
jquery-ui ×1
razor ×1
refactoring ×1
rhino-mocks ×1
string ×1
tdd ×1
tokenize ×1
truncate ×1
z-index ×1