我开始,并且喜欢TDD,无论如何对红绿灯概念感到疑惑.理论上我理解确保在通过测试之前可以通过测试的重要性.然而,在实践中,我发现这有点徒劳无益.
我觉得如果不实现我打算测试的代码,我就无法正确编写失败或通过测试.例如,如果我编写一个测试来显示我的DataProvider正在返回一个DataRow,我需要编写DAL逻辑以提供有意义的失败,一个失败超过NullException或从空方法返回Null,这似乎是毫无意义,因为我觉得红灯应该表明我可以根据我测试的实际逻辑创建一个失败的测试.
换句话说,如果我只是返回null或false,从我正在测试的函数中得到我的失败真正的红灯值.
但是,如果我已经实现了逻辑(这在某种程度上违背了测试的第一范式),我发现我只是为了获得一个红色来测试互斥概念(IsTrue而不是IsFalse,或IsNull而不是IsNotNull)光而不是绿色,然后切换到相反的方式获得通行证.
我没有理解这个概念,我真的在提出这个问题,因为这是我注意到的事情,我想知道我做错了什么.
编辑
我接受了查理·马丁的回答,因为它对我来说效果最好,并没有暗示其他答案没有任何效力,所有这些都帮助我理解了一个我显然没有正确理解的概念
如果免费源代码编辑器Notepad ++具有"在文件中查找..."功能,即没有在编辑器中打开文件,它是否还具有"替换文件..."功能?
Notepad ++基于编辑组件Scintilla - 在SourceForge上有一个对此功能请求的响应:"不需要将其包含在SciTE中,因为您可以使用"参数"对话框将此命令添加到"工具"菜单中.那么可以在Notepad ++ 中的文件中进行多行替换吗?
我正在开发一个C++ API,它使用自定义设计的插件,使用它们的API和特定的SQL语法与不同的数据库引擎进行交互.
目前,我正在尝试找到一种插入BLOB的方法,但由于它NULL是C/C++中的终止字符,因此在构造INSERT INTO查询字符串时BLOB会被截断.到目前为止,我一直在努力
//...
char* sql;
void* blob;
int len;
//...
blob = some_blob_already_in_memory;
len = length_of_blob_already_known;
sql = sqlite3_malloc(2*len+1);
sql = sqlite3_mprintf("INSERT INTO table VALUES (%Q)", (char*)blob);
//...
Run Code Online (Sandbox Code Playgroud)
我希望,如果它可以在SQLite3交互式控制台中完成,那么应该可以使用正确转义的NULL字符构造查询字符串.也许有一种方法可以使用SQLite SQL语法支持的标准SQL来实现这一点?
当然有人必须面对同样的情况.我用Google搜索并找到了一些答案,但是还有其他编程语言(Python).
提前感谢您的反馈.
在VC6中进行字符串格式化是否有更好的替代方法,在替换之前进行语法检查?
对不起,但这开始感觉就像在踢脑袋一样.我完全被RSpec困惑了.在视频之后观看了视频,在教程之后阅读了教程,但我仍然只是停留在正方形.
===这是我正在使用的
http://github.com/fudgestudios/bort/tree/master
===错误
F
1)
NoMethodError in 'bidding on an item should work'
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.new_record?
spec/controllers/auction_controller_spec.rb:16:
spec/controllers/auction_controller_spec.rb:6:
Finished in 0.067139 seconds
1 example, 1 failure
Run Code Online (Sandbox Code Playgroud)
===这是我的控制器动作
def bid
@bid = Bid.new(params[:bid])
@bid.save
end
Run Code Online (Sandbox Code Playgroud)
===这是我的考试
require File.dirname(__FILE__) + '/../spec_helper'
include ApplicationHelper
include UsersHelper
include AuthenticatedTestHelper
describe "bidding on an item" do
controller_name :items
before(:each) do
@user = mock_user …Run Code Online (Sandbox Code Playgroud) 我有两页jQuery,Page1和Page2,我可以在Page1中获得输入.
的somval=1000$.
第1页用户输入somevalue.我存储了值:
var val = somval;
Run Code Online (Sandbox Code Playgroud)
现在在第二页中,我需要在第1页中获得somvalue的结果.当然,分别使用My1.js My2.js的两个页面.
如何将一个jQuery文件中的值与其他JavaScript共享,或者如何从page1值获取值到page2?
我该如何解决这个问题?
我发现以下内容相当奇怪.然后,我主要使用动态语言中的闭包,这对于同一个"bug"应该是不可怀疑的.以下使编译器不满意:
VoidFunction t = delegate { int i = 0; };
int i = 1;
Run Code Online (Sandbox Code Playgroud)
它说:
名为"i"的局部变量不能在此范围内声明,因为它会给"i"赋予不同的含义,"i"已在"子"范围内用于表示其他内容
所以这基本上意味着在委托中声明的变量将具有声明的函数的范围.不完全是我所期望的.我甚至没有尝试过调用这个函数.至少Common Lisp有一个功能,你可以说变量应该有一个动态名称,如果你真的希望它是本地的.这在创建不泄漏的宏时尤其重要,但这样的东西也会有所帮助.
所以我想知道其他人如何解决这个问题呢?
为了澄清我正在寻找一个解决方案,其中我在delegete中声明的变量不会干扰委托后声明的变量.我仍然希望能够捕获委托之前声明的变量.