Open msiebuhr opened 8 years ago
This is a very good point. I haven't used Unexpected for a lot of integration testing so I haven't been running into these limitations. Unexpected should of cause handle this situation well.
I think we need to batch the checks up into chunks otherwise we wont be able bail out. I think it makes sense to only show 10 or 20 errors and then just state that there are more errors. I also like the idea of not showing all the items that passed.
For the needle in the haystack problem, what about something like this:
expected array to have items satisfying to be a number
[
0,
// indexes from 1 to 1251 collapsed
1252,
'1253', // to be a number
1254,
// indexes from 1255 to 1499 collapsed
1500
]
@papandreou do you have any opinions on this subject.
Those are fine ideas! Would be nice to derive some principles and apply to other assertions, especially to satisfy
.
I don't really think this is applicable to to satisfy
; those are typically hand-written and not overly large (at least that's what I do). The array/object assertions allow to automate detailed checks on extremely large data-structures, making the output the more overwhelming...
I currently move some bulk data between various databases with some processing on the side. For testing a do a small-ish query that results in a few thousand elements and verify the looks OK. Paraphrasing:
When it fails, it takes a few seconds to execute and print the output, pretty-printing the entire dataset to the console. (Which, given moderately complex objects, can be quite difficult to devour.)
I've used two strategies to avoid this so far:
forEach
'ing over the elementsGiven that passing runs aren't noticeably slow, it has to be generation of the output that causes things to slow down.
I propose two strategies for dealing with this: