我想使用RSpec模拟为块提供固定输入.
红宝石:
class Parser
attr_accessor :extracted
def parse(fname)
File.open(fname).each do |line|
extracted = line if line =~ /^RCS file: (.*),v$/
end
end
end
Run Code Online (Sandbox Code Playgroud)
RSpec的:
describe Parser
before do
@parser = Parser.new
@lines = mock("lines")
@lines.stub!(:each)
File.stub!(:open).and_return(@lines)
end
it "should extract a filename into extracted" do
linetext = [ "RCS file: hello,v\n", "bla bla bla\n" ]
# HELP ME HERE ...
# the :each should be fed with 'linetext'
@lines.should_receive(:each)
@parser.should_receive('extracted=')
@parser.parse("somefile.txt")
end
end
Run Code Online (Sandbox Code Playgroud)
这是一种通过将固定数据传递到其中来测试块内部正常工作的方法.但我无法弄清楚如何使用RSpec模拟机制进行实际喂食.
更新:看起来问题不是使用linetext,而是使用:
@parser.should_receive('extracted=')
Run Code Online (Sandbox Code Playgroud)
这不是它的调用方式,用红色代码替换它,self.extracted =有点帮助,但不知何故感觉不对.
我刚刚注意到Dictionary.TryGetValue(TKey key, out TValue value)并且很好奇哪个是从Dictionary中检索值的更好方法.
我传统上做了:
if (myDict.Contains(someKey))
someVal = myDict[someKey];
...
Run Code Online (Sandbox Code Playgroud)
除非我知道它有必要在里面.
做的更好:
if (myDict.TryGetValue(somekey, out someVal)
...
Run Code Online (Sandbox Code Playgroud)
哪种更好的做法?一个比另一个快吗?我会想象Try版本会慢一些,因为它'swallowing'是一个try/catch本身并将其用作逻辑,不是吗?
我通过cmd-line运行win2003服务器,PHP 526.
我有一个cmdline字符串:
$cmd = ' "d:\Prog Files\foo.exe" -p "d:\data path\datadir" ';
Run Code Online (Sandbox Code Playgroud)
试图在PHP代码中执行此操作
$out = `$cmd`; # note use of backticks AKA shell_exec
Run Code Online (Sandbox Code Playgroud)
foo.exe导致失败,因为它将-p arg解释为"d:\ data".
但是,$cdm复制到Windows shell cmdline 的相同字符串会成功执行.
如何在PHP中正确处理空格shell_exec?
我想创建自己的Python异常类,如下所示:
class MyException(BaseException):
def __init__(self, errno, address):
if errno == 10048:
mess = str(address) + ' is already in use'
else:
mess = 'Unable to open ' + str(address)
BaseException.__init__(mess)
Run Code Online (Sandbox Code Playgroud)
但是当程序接到电话时BaseException.__init__(),我得到了这个追溯:
BaseException.__init__(mess)
TypeError: descriptor '__init__' requires a 'exceptions.BaseException' object but received a 'str'
Run Code Online (Sandbox Code Playgroud)
我认为BaseException将采用任何一组参数.另外,我应该如何将'exceptions.BaseException'对象传递给exceptions.BaseException的构造函数?
我注意到boost.asio有很多涉及套接字,串行端口和各种非文件示例的例子.对于我来说,Google并没有真正提到过很多,因为asio是一个很好或有效的异步文件i/o方法.
我有大量的数据我想异步写入磁盘.这可以通过Windows(我的平台)中的原生重叠io来完成,但我更喜欢拥有独立于平台的解决方案.
我好奇,如果
如何为使用DLL的人在程序集(DLL)之外创建一个属性"ReadOnly",但是仍然能够从程序集中填充该属性以供他们阅读?
例如,如果我有一个Transaction对象需要在Transaction对象中发生某些事情时填充Document对象(它是Transaction类的子类)中的属性,但我只想开发人员使用我的DLL只是能够读取该属性而不是更改它(它应该只在DLL本身内更改).
如何在具有稀疏日期数的表和另一个具有详尽日期数的表之间进行连接,以使稀疏日期之间的间隙采用上一个稀疏日期的值?
说明性示例:
PRICE table (sparse dates):
date itemid price
2008-12-04 1 $1
2008-12-11 1 $3
2008-12-15 1 $7
VOLUME table (exhaustive dates):
date itemid volume_amt
2008-12-04 1 12345
2008-12-05 1 23456
2008-12-08 1 34567
2008-12-09 1 ...
2008-12-10 1
2008-12-11 1
2008-12-12 1
2008-12-15 1
2008-12-16 1
2008-12-17 1
2008-12-18 1
Run Code Online (Sandbox Code Playgroud)
期望的结果:
date price volume_amt
2008-12-04 $1 12345
2008-12-05 $1 23456
2008-12-08 $1 34567
2008-12-09 $1 ...
2008-12-10 $1
2008-12-11 $3
2008-12-12 $3
2008-12-15 $7
2008-12-16 $7
2008-12-17 $7
2008-12-18 …Run Code Online (Sandbox Code Playgroud) 我从生产中恢复了我的开发数据库,我的生成数据库中不存在我在开发环境中需要的存储过程.是否可以使用命令将developmetn存储过程导入SQL Server.大约有88个文件,因为每个过程都在不同的文本文件中.
TIA!克里斯
在编写异步API时,我可以使用哪些有用的习惯用法吗?我希望标准化一些东西,因为我似乎总是使用一些不同的样式.似乎很难使异步代码变得简单; 我想这是因为异步操作不过是.
在最基本的层面上,API的用户必须能够:
我的类支持多个异步操作.我一直在课堂上放置一些状态/错误回调,但是这个类在很多偶然的字段中变得很糟糕,而且变得太大了.我很好奇是否有人使用过他们发现组织良好的异步API.我查看了.NET的Begin/EndAsyncOperation + AsyncResult设计,以及Java中的一些类(例如Future).
这是用Python编写的,因此它仍然非常灵活.有一点需要注意:其中一些异步操作正在被封送到远程机器并在那里执行.因此,并非每个操作都必须在单独的线程中执行.
.net ×3
python ×2
assemblies ×1
asynchronous ×1
boost ×1
boost-asio ×1
c# ×1
c++ ×1
dictionary ×1
exception ×1
file-io ×1
import ×1
inheritance ×1
internal ×1
mocking ×1
php ×1
properties ×1
rspec ×1
rspec-mocks ×1
ruby ×1
shell-exec ×1
sql ×1
sql-server ×1