正在加载...

fudge文档翻译-4

Allowing any call or attribute (a complete stub)

如果你需要一个对象,延迟提供任何调用或者任何属性,你可以声明fudge.Fake.isastub()。任何被请求的方法或者属性将永远返回一个新的fudge.Fake实例,使其更加容易的工作在复杂的对象上。这有一个例子:

>>> Server = fudge.Fake('xmlrpclib.Server').is_a_stub()
>>> pypi = Server('http://pypi.python.org/pypi')
>>> pypi.list_packages()
fake:xmlrpclib.Server().list_packages()
>>> pypi.package_releases()
fake:xmlrpclib.Server().package_releases()

Stubs像这样无限的进行。

>>> f = fudge.Fake('base').is_a_stub()
>>> f.one.two.three().four
fake:base.one.two.three().four

注意当使用fudge.Fake.isastub(),你不能延迟访问任何有相同名字的属性或者方法,像returns()或者with_args()。你需要直接使用fudge.expects()等,来声明一个预期。

Working with Arguments

fudge.Fake.with_args() 方法可以随意的允许你声明怎样传递参数到你的对象的预期。对于一个预期的确定的参数值,它通常就足够了。但是有时候你需要为动态的参数值使用fudge.inspector方法。

这有一个短的例子:

>>> import fudge
>>> from fudge.inspector import arg
>>> image = (fudge.Fake("image")
...               .expects("save")
...               .with_args("JPEG", arg.endswith(".jpg"), resolution=arg.any())
... )

这个声明十分的灵活;它允许下面这样的调用:

>>> image.save("JPEG", "/tmp/unicorns-and-rainbows.jpg", resolution=72)
>>> image.save("JPEG", "/tmp/me-being-serious.jpg", resolution=96)

这就是Fudge!更多的细节请看fudge的API: