我可以编写哪个测试来强制执行以下代码

时间:2011-10-26 17:30:38

标签: javascript python ruby tdd coffeescript

我喜欢让我的测试来强制我的设计但是当我来到收藏品时,我总是遇到问题。我想强制执行的代码如下:

clientInvoices : (client, callback)->

  @all (invoices)->

    callback invoice \
    for invoice in invoices \
    when invoice.data.clientId() is client.data._id()

起初我写道:

it 'should get randomid1 invoices', ->

  subject.clientInvoices client, (invoices)->

    invoices.length.should_be 3

但是,由于你需要以最少的努力完成测试,你可以通过

来完成这个过程
clientInvoices : (client, callback)->

  @all (invoices)-> callback [1,2,3]

代码在Coffee-Script中,但Python,Ruby或JavaScript中的示例都很受欢迎。

1 个答案:

答案 0 :(得分:1)

这没有意义:

for invoice in invoices \
when invoices.data.clientId() is client.data._id()

我认为你必须指的是

for invoice in invoices \
when invoice.data.clientId() is client.data._id()

如果是这种情况,那么你的窘境的解决方案就是添加关于回调收到的invoices对象的更多断言,例如

invoice.data.clientId().should_be client.data._id() for invoice in invoices

(或者您的测试中断言的正确语法 - 您在示例中使用should_be)。通过这种额外的断言,您可以更轻松地使您的功能正常工作,而不是让它生成虚假数据。