You mean, test that a Box<dyn Error> is what you expect? Using to_string() seems reasonable to me. If you wanted to test more than the message, you can try downcasting and walking the source() results, etc, but that seems like overkill to me in this case.
Incidentally, you're calling to_string() in both your map_err and after your unwrap_err. You could just do this.
let result = run(config.unwrap()).map_err(|error| error.to_string());
assert_eq!(result.unwrap_err(), error_expected);
I'm not sure what type your run() function returns but if wanted something a bit more robust you could do as @quinedot suggested and check for an io::ErrorKind::NotFound using the following little underlying_io_error_kind function. For example: