它们是否相同?某些事情可以用一个而不是另一个完成吗?那些是什么?或者,在一天结束时,是熟悉的问题?
谁能告诉我为什么这不起作用?
function changeBG(element_id){
document.getElementById(element_id).className= "arrowActive";
setTimeout("document.getElementById("+element_id+").className= 'arrow'", 300);
}
Run Code Online (Sandbox Code Playgroud)
在firebug中,我得到一个错误,说明传递给setTimeout()的element_id没有定义.
自从我开始使用rspec以来,我遇到了固定装置概念的问题.我主要担心的是:
我使用测试来揭示令人惊讶的行为.对于我正在测试的示例,我并不总是能够枚举每个可能的边缘情况.使用硬编码灯具似乎有限,因为它只用我想象的非常具体的情况来测试我的代码.(不可否认,我的想象力也限制了我测试的情况.)
我使用测试作为代码的文档形式.如果我有硬编码的夹具值,很难揭示特定测试试图演示的内容.例如:
describe Item do
describe '#most_expensive' do
it 'should return the most expensive item' do
Item.most_expensive.price.should == 100
# OR
#Item.most_expensive.price.should == Item.find(:expensive).price
# OR
#Item.most_expensive.id.should == Item.find(:expensive).id
end
end
end
Run Code Online (Sandbox Code Playgroud)
使用第一种方法给读者没有指示最昂贵的物品是什么,只是它的价格是100.所有三种方法都要求读者认为夹具:expensive是最昂贵的物品fixtures/items.yml.粗心的程序员可以通过创建Itemin before(:all)或通过插入另一个fixture 来中断测试fixtures/items.yml.如果这是一个大文件,可能需要很长时间才能弄清问题是什么.
我开始做的一件事是#generate_random为我的所有模型添加一个方法.此方法仅在我运行规范时可用.例如:
class Item
def self.generate_random(params={})
Item.create(
:name => params[:name] || String.generate_random,
:price => params[:price] || rand(100)
)
end
end
Run Code Online (Sandbox Code Playgroud)
(我这样做的具体细节实际上有点清晰.我有一个类来处理所有模型的生成和清理,但是这个代码对于我的例子来说足够清楚了.)所以在上面的例子中,我可能会测试为如下.佯装的警告:我的代码在很大程度上依赖于before(:all):
describe Item do
describe '#most_expensive' do
before(:all) do
@items = [] …Run Code Online (Sandbox Code Playgroud) 我怎样才能找出导致equals()返回false的原因?
我不是在问一个确定的方法,总是正确的方法,而是一些有助于开发过程的东西.目前我必须进入equals()调用(通常是它们的树),直到其中一个为假,然后进入它,令人作呕.
我想过使用对象图,将其输出到xml并比较两个对象.但是,XMLEncoder需要默认构造函数,jibx需要预编译,x-stream和简单的api不在我的项目中使用.我不介意将一个类,甚至一个包复制到我的测试区域并在那里使用它,但导入整个jar只是不会发生.
我还想过自己构建一个对象图遍历器,我可能仍然会这样做,但我不想开始处理特殊情况(有序集合,非有序集合,映射......)
知道如何去做吗?
编辑:我知道添加罐子是正常的做事方式.我知道罐子是可重复使用的单位.然而,(在我的项目中)所需的官僚机构并不能证明结果是合理的 - 我会继续进行调试和踩踏.
Java应用程序是否可以使用其名称(而不是其位置)以独立于平台的方式加载到单独的进程中?
我知道你可以通过...执行一个程序
Process process = Runtime.getRuntime().exec( COMMAND );
Run Code Online (Sandbox Code Playgroud)
...这种方法的主要问题是这种调用是特定于平台的.
理想情况下,我将方法包装成简单的方法......
EXECUTE.application( CLASS_TO_BE_EXECUTED );
Run Code Online (Sandbox Code Playgroud)
...并传入应用程序类的完全限定名称CLASS_TO_BE_EXECUTED.
回到.NET 1.0天,我写了一个方法来返回MS Windows上的快捷方式的目标.它通过使用Windows脚本托管对象模型的互操作和强制通过COM接口执行此操作:
private FileInfo GetFileFromShortcut(FileInfo shortcut)
{
FileInfo targetFile = null;
try
{
IWshRuntimeLibrary.WshShell wShell = new IWshRuntimeLibrary.WshShellClass();
IWshRuntimeLibrary.WshShortcut wShortcut = (IWshRuntimeLibrary.WshShortcut)wShell.CreateShortcut(shortcut.FullName);
// if the file wasn't a shortcut then the TargetPath comes back empty
string targetName = wShortcut.TargetPath;
if (targetName.Length > 0)
{
targetFile = new FileInfo(targetName);
}
}
catch (Exception)
{ // will return a null targetFile if anything goes wrong
}
return targetFile;
}
Run Code Online (Sandbox Code Playgroud)
这仍然让我感到困扰,我希望用更优雅的东西取代它,但前提是替换实际上至少也是如此.我仍然找不到寻找快捷方式目标的本地C#方式.有没有,或者这仍然是做这种事情的最佳方式?
我想获取当前正在运行的批处理文件的名称,没有文件扩展名.
感谢这个链接,我的文件名带有扩展名......但是在批处理文件中执行子字符串的最佳方法是什么?
或者是否有其他方法来获取没有扩展名的文件名?
在这种情况下,可以安全地假设3个字母的扩展名.
我们的生产机器在debian蚀刻上运行.现在,他们终于发布了lenny,那一天我们需要升级这些系统.如何以最小的风险做到这一点?是否有任何前提,后备方案的准备工作,如果出现问题我是否需要计划B?除了debian安装程序处理的二进制包之外,还有一些在机器上运行的已编译应用程序.
在VB中在后台运行定期任务的最简单方法是什么?
例如:使用当前时间每秒更新一个标签,同时仍然允许表单可用.