Will a SP which writes records fail if accessed by a db_datareader role?
If the same user owns both table and stored procedure (usually dbo), then permissions are not checked. This is known as "ownership chaining". 

So you could have a DENY on the table and it won't be checked. db_datareader makes no difference: it isn't checked.

If the owners are different (and note that it's the owner of the schema that matters) then rights will be needed. See the MSDN example above.

Anyway, you need to catch the errors to make sure, either by TRY/CATCH or via SQL Profiler