3

I'm trying to unit test file read operations. In this scenario I also need make sure that, if a particular user don't have read access he should get an exception...

But somehow I'm unable to get it working, can anyone suggest something?

PS: I'm using Rhino mock and NUnit

Mark Seemann
  • 225,310
  • 48
  • 427
  • 736
Prashant Cholachagudda
  • 13,012
  • 23
  • 97
  • 162

3 Answers3

2

You could use Rhino.Mocks "Do" extension to throw a specific exception:

public delegate void ThrowExceptionDelegate();
mystub.Stub(x => x.ReadFile()).Do(new ThrowExceptionDelegate(delegate()
    { throw new IOException(); }
    ));

This would allow you to test your exception handling code.

PatrickSteele
  • 14,489
  • 2
  • 51
  • 54
1

You need to get a test in place which, in place of reading a file is using a mock that throws an exception instead of really reading a file. Then you can verify that the appropriate handling is triggered and things work out as they should.

If you need a better answer, you need to give an example of your classes and maybe the skeleton of the test you've written so far.

Ruben Bartelink
  • 59,778
  • 26
  • 187
  • 249
1

I'd go for a proper acceptance test - using mocks too much can be a bit dangerous. In this case it's easy to programmatically set + unset file permissions anyway.

I had a similar problem - wanted to test a permissions problem + came up with the following helper class to wrap the library API for messing around with file permissions

set file permissions for c:\program files\company\app\file for all users

Community
  • 1
  • 1
JonnyRaa
  • 7,559
  • 6
  • 45
  • 49