Hi,
Does it make sense to test a worker class by calling
Middleman.new_worker? Or should I just be testing the functionality in
the do_work method, with, say, a mock object. This seems like a really
ugly DRY violation: you''d need to keep the code in the mock and the
real worker in sync.
That''s the philosophical half of my question. In fact, until someone
tells me why I shouldn''t, I am trying to call new_worker from a test
method in the test class generated by the worker generator. I''m
getting
NoMethodError: undefined method `[]'' for
#<DRb::DRbUnknown:0xb72c7128>
I note in another thread that this is due to DRbundumped not being
included in the class that is causing the error. I took this to mean
that I need "include DRbundumped" in my test class, but that
didn''t
work. I''m not sure where else I should include it. I know that
eventually I''ll need to put it in the non-test class that calls
new_worker, but I''m not there yet. Is testing workers just a
non-starter?
Here''s the test method:
def test_task_is_triggered
job_key = MiddleMan.new_worker :class => :task_checker_worker,
:args => tasks(:should_be_triggered)
@job_keys << job_key
# ...assertions go here...
end
thanks,
jh
--
James Hughes
Web application developer
Vancouver, BC
"Developing a coherent political analysis is in many respects
contingent upon an ability to connect one context to another, a
process not dissimilar to playing the kid''s game of dot-to-dot."
- Ward Churchill, from ''"A Government of Laws"?''
On Jul 19, 2006, at 3:24 PM, James Hughes wrote:> Hi, > > Does it make sense to test a worker class by calling > Middleman.new_worker? Or should I just be testing the functionality in > the do_work method, with, say, a mock object. This seems like a really > ugly DRY violation: you''d need to keep the code in the mock and the > real worker in sync. > > That''s the philosophical half of my question. In fact, until someone > tells me why I shouldn''t, I am trying to call new_worker from a test > method in the test class generated by the worker generator. I''m > getting > > NoMethodError: undefined method `[]'' for #<DRb::DRbUnknown:0xb72c7128> > > I note in another thread that this is due to DRbundumped not being > included in the class that is causing the error. I took this to mean > that I need "include DRbundumped" in my test class, but that didn''t > work. I''m not sure where else I should include it. I know that > eventually I''ll need to put it in the non-test class that calls > new_worker, but I''m not there yet. Is testing workers just a > non-starter? > > Here''s the test method: > > def test_task_is_triggered > job_key = MiddleMan.new_worker :class => :task_checker_worker, > :args => tasks(:should_be_triggered) > @job_keys << job_key > # ...assertions go here... > end > > > thanks, > jh > > -- > James HughesHey James- Yeah I have some code for a better test harness that I need to get working correctly and release. The best way I have come up with is to create an additional config file for test mode that connects to the test db. Then you have a rake wrapper for your tests that starts the drb server in test mode when your tests fire up. Because there needs to be a good way to test things from end to end through the MiddleMan. I am open for suggestions on a better test harness. I am just very busy this week so I won''t have time until at least the weekend to get something new released. Thanks- -Ezra P.S. I would love a patch for a better test harness if any one comes up with one ;)