问题列表 - 第246页

我应该如何测试从DataReader填充列表的方法?

所以我正在研究一些对手动数据库操作很重要的遗留代码.我想在这里保持一些相似的质量,所以我尽可能地去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.

c# tdd unit-testing mocking

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

如何使用预先存在的帐户从程序_without_发送电子邮件?

我希望我的程序能够通过电子邮件向我发送错误报告.如何在不对用户名/密码/ SMTP服务器/等进行硬编码的情况下执行此操作.进入代码?(这样做会允许用户反编译程序并接管此电子邮件帐户.)

我被告知你可以通过telnet到端口25做一些事情,但我对细节非常模糊.Google上的大多数代码段都假设您有一个预先存在的帐户,但在这种情况下不起作用.

我使用的是.NET v3.5(特别是C#),但我认为这些想法在大多数语言中都足够相似.只要您意识到我正在为离线应用程序执行此操作,并且不向我提供PHP代码或其他内容,我们应该没问题.

.net email smtp

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

简单的编程实践(Fizz Buzz,Print Primes)

我想从键盘(即笔和纸)上练习我的技能,而且我正在使用像Fizz Buzz这样的简单练习题,打印出前N个素数.

你最喜欢的简单编程问题是什么?

language-agnostic

7
推荐指数
3
解决办法
3659
查看次数

如何将html实体与jQuery进行比较

我有以下HTML代码:

<h3 id="headerid"><span onclick="expandCollapse('headerid')">&uArr;</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 == "&dArr;") {     
        $("#"+id+" span").html("&uArr;");               
    } else {        
        $("#"+id+" span").html("&dArr;");               
    }
}
Run Code Online (Sandbox Code Playgroud)

我的功能始终是其他路径.如果我做一个javacript:arrow变量的警告我得到的html实体表示为箭头.我如何告诉jQuery将arrow变量解释 为字符串而不是html.

javascript jquery html-entities

11
推荐指数
1
解决办法
6384
查看次数

你可以使用SQLMetal等LINQ工具和访问数据库吗?

我正在创建一个小型数据库应用程序来自学以下概念

  1. C#编程
  2. .Net 3.5框架
  3. WPF
  4. LINQ ORM

我想使用Microsoft Access作为数据库,但我似乎无法提及是否可以使用SQLMetal从Microsoft Access数据库生成ORM代码.

有谁知道这是否可能?

如果没有,我可以使用任何小型数据库或嵌入式数据库吗?我认为SQL express在这一点上对我来说太过分了.

c# ms-access linq-to-sql

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

当iframe在jQuery中加载完成后,如何触发事件?

我必须在页面中加载PDF.

理想情况下,我希望有一个加载动画gif,一旦PDF加载后替换.

javascript jquery

94
推荐指数
6
解决办法
18万
查看次数

如何根据其内容选择XML节点?

如何使用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)

xml xpath

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

所有正则表达口味的共同特征?

我已经看到了不同正则表达式工具/语言(例如perl,sed,java,vim等)的正则表达式功能的很多共性,但我也有很多不同之处.

是否有一个标准的正则表达式子集,所有正则表达式的工具/语言都支持这些功能?工具/语言之间的正则表达式功能有何不同?

regex language-agnostic

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

JavaScript和线程

有没有办法在JavaScript中进行多线程?

javascript multithreading

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

DOM splitText和normalize组合应该给出身份吗?

昨天我卷入了关于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专家都可以解决这个问题吗?

xml dom

7
推荐指数
1
解决办法
346
查看次数