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

Javascript 我可以编写哪个测试来强制执行以下代码,javascript,python,ruby,tdd,coffeescript,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 randomid

我喜欢通过测试来强制我的设计,但当我涉及到集合时,我总是遇到问题。我要强制执行的代码如下:

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脚本,但Python、Ruby或JavaScript的示例都值得欣赏。

这没有意义:

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

(或者您在测试中使用的断言的正确语法在您的示例中应该是
)。有了这个额外的断言,让函数正常工作比让它生成假数据更容易。

这没有意义:

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

(或者您在测试中使用的断言的正确语法在您的示例中应该是
)。有了这个额外的断言,让函数正常工作要比让它生成假数据容易得多。

这是一个糟糕的问题吗?如果情况不清楚,可以调整。问题是什么?如何测试第一个函数?问题是:我写的哪个测试迫使我写第一个函数?这是一个糟糕的问题吗?如果情况不清楚,可以调整。问题是什么?如何测试第一个函数?问题是:我写的哪个测试迫使我写第一个函数?发票确实是一个打字错误。增加额外的测试是我目前正在做的。我想我会继续这样做。谢谢你的回答。发票确实是个打字错误。增加额外的测试是我目前正在做的。我想我会继续这样做。谢谢你的回答。