所以我正在研究一些对手动数据库操作很重要的遗留代码.我想在这里保持一些相似的质量,所以我尽可能地去TDD.
我正在处理的代码需要填充,让我们说List<Foo>一个DataReader,它返回一个正常运行的Foo所需的所有字段.但是,如果我想验证代码实际上每个数据库行返回一个列表项,我正在编写看起来像这样的测试代码:
Expect.Call(reader.Read()).Return(true);
Expect.Call(reader["foo_id"]).Return((long) 1);
// ....
Expect.Call(reader.Read()).Return(true);
Expect.Call(reader["foo_id"]).Return((long) 2);
// ....
Expect.Call(reader.Read()).Return(false);
Run Code Online (Sandbox Code Playgroud)
这也是相当乏味而且很容易被打破的.
我应该如何处理这个问题,以便结果不会是一大堆脆弱的测试?
顺便说一句,我目前正在使用Rhino.Mocks,但如果结果足够令人信服我可以改变它.只要替代品不是TypeMock,因为他们的EULA对我的口味有点太可怕了.
编辑:我目前也只限于C#2.
我希望我的程序能够通过电子邮件向我发送错误报告.如何在不对用户名/密码/ SMTP服务器/等进行硬编码的情况下执行此操作.进入代码?(这样做会允许用户反编译程序并接管此电子邮件帐户.)
我被告知你可以通过telnet到端口25做一些事情,但我对细节非常模糊.Google上的大多数代码段都假设您有一个预先存在的帐户,但在这种情况下不起作用.
我使用的是.NET v3.5(特别是C#),但我认为这些想法在大多数语言中都足够相似.只要您意识到我正在为离线应用程序执行此操作,并且不向我提供PHP代码或其他内容,我们应该没问题.
我想从键盘(即笔和纸)上练习我的技能,而且我正在使用像Fizz Buzz这样的简单练习题,打印出前N个素数.
你最喜欢的简单编程问题是什么?
我有以下HTML代码:
<h3 id="headerid"><span onclick="expandCollapse('headerid')">⇑</span>Header title</h3>
Run Code Online (Sandbox Code Playgroud)
每次用户点击span标记时,我都希望在向上箭头和向下箭头之间切换.
function expandCollapse(id) {
var arrow = $("#"+id+" span").html(); // I have tried with .text() too
if(arrow == "⇓") {
$("#"+id+" span").html("⇑");
} else {
$("#"+id+" span").html("⇓");
}
}
Run Code Online (Sandbox Code Playgroud)
我的功能始终是其他路径.如果我做一个javacript:arrow变量的警告我得到的html实体表示为箭头.我如何告诉jQuery将arrow变量解释 为字符串而不是html.
我正在创建一个小型数据库应用程序来自学以下概念
我想使用Microsoft Access作为数据库,但我似乎无法提及是否可以使用SQLMetal从Microsoft Access数据库生成ORM代码.
有谁知道这是否可能?
如果没有,我可以使用任何小型数据库或嵌入式数据库吗?我认为SQL express在这一点上对我来说太过分了.
我必须在页面中加载PDF.
理想情况下,我希望有一个加载动画gif,一旦PDF加载后替换.
如何使用XPath根据其内容选择XML节点?
如果我有以下xml,我想选择包含Ritchie的<author> -node来获取作者的全名:
<books>
<book isbn='0131103628'>
<title>The C Programming Language</title>
<authors>
<author>Ritchie, Dennis M.</author>
<author>Kernighan, Brian W.</author>
</authors>
</book>
<book isbn='1590593898'>
<title>Joel on Software</title>
<authors>
<author>Spolsky, Joel</author>
</authors>
</book>
</books>
Run Code Online (Sandbox Code Playgroud) 我已经看到了不同正则表达式工具/语言(例如perl,sed,java,vim等)的正则表达式功能的很多共性,但我也有很多不同之处.
是否有一个标准的正则表达式子集,所有正则表达式的工具/语言都支持这些功能?工具/语言之间的正则表达式功能有何不同?
昨天我卷入了关于DOM实现怪癖的讨论,引发了一个关于Text.splitText和Element.normalise行为以及它们应该如何表现的有趣问题.
在DOM Level 1 Core中,Text.splitText被定义为......
将此Text节点分解为指定偏移量的两个Text节点,将两者保留在树中作为兄弟节点.然后,该节点仅包含直到偏移点的所有内容.并且作为此节点的下一个兄弟插入的新Text节点包含偏移点处和之后的所有内容.
标准化是......
将所有Text节点放在此Element下面的子树的完整深度中,形成"正常"形式,其中只有标记(例如,标记,注释,处理指令,CDATA部分和实体引用)将Text节点分开,即有没有相邻的Text节点.这可用于确保文档的DOM视图与保存和重新加载文档的DOM视图相同,并且在使用依赖于特定文档树结构的操作(例如XPointer查找)时非常有用.
所以,如果我采用一个包含"Hello World"的文本节点,在textNode中引用,并且执行
textNode.splitText(3)
Run Code Online (Sandbox Code Playgroud)
textNode现在具有内容"Hello",以及包含"World"的新兄弟
如果我那么
textNode.parent.normalize()
Run Code Online (Sandbox Code Playgroud)
什么是textNode?该规范没有明确表示textNode仍然是它的前一个父节点的子节点,只是更新为包含所有相邻的文本节点(然后被删除).它似乎是一个删除所有相邻文本节点的一个conforment行为,然后重新创建一个具有值的串联的新节点,使textNode指向不再是树的一部分的东西.或者,我们可以以与splitText相同的方式更新textNode,因此它保留了它的树位置,并获得了一个新值.
行为的选择实际上是完全不同的,我无法找到关于哪个是正确的澄清,或者这只是规范中的疏忽(它似乎在2级或3级似乎没有澄清).任何DOM/XML专家都可以解决这个问题吗?
javascript ×3
c# ×2
jquery ×2
xml ×2
.net ×1
dom ×1
email ×1
linq-to-sql ×1
mocking ×1
ms-access ×1
regex ×1
smtp ×1
tdd ×1
unit-testing ×1
xpath ×1