I assume the reason you enqueue 3 jobs but only pop one is because `after_fork` should run only once.  However, this doesn't actually show that it runs only once: it could run multiple times and you are just popping once, so it could still have run multiple times.

Here's what I think is a better way to do this (which will also remove the `sleep 3`):

* Enqueue 3 jobs that each put a word on a redis list.
* In the `after_fork` hook put a word on the list as well.
* Use the `drain_worker_queues` method to run the workers rather than `run_jobs` (added in my pr here: https://github.com/seomoz/qless/commit/367a41ad1dba0ee7560029f9a3bef9c4266ccf4f).  Then you don't have to use sleep and blocking pop to figure out when the jobs are complete.
* After draining the queues, use `lrange` to get all the words on the list, and assert that the order is the `after_fork` word followed by the 3 job words.  That demonstrates that `after_fork` was called once, and called first, before any jobs were run, which is the important behavior we want.
* Note that you'll probably want to set a descending priority on the 3 jobs when you enqueue them to guarantee they run in the desired order.  When multiple jobs are enqueued in the same second there's no guarantee about their order because Qless's internal mechanism uses `Time.to_i` which is in seconds.