diff --git a/tests/unit/test_vcr.py b/tests/unit/test_vcr.py index 92c85ab..297595d 100644 --- a/tests/unit/test_vcr.py +++ b/tests/unit/test_vcr.py @@ -113,6 +113,21 @@ def test_vcr_before_record_response_iterable(): assert mock_filter.call_count == 1 +def test_before_record_response_as_filter(): + request = Request('GET', '/', '', {}) + response = object() # just can't be None + + # Prevent actually saving the cassette + with mock.patch('vcr.cassette.save_cassette'): + + filter_all = mock.Mock(return_value=None) + vcr = VCR(before_record_response=filter_all) + with vcr.use_cassette('test') as cassette: + cassette.append(request, response) + assert cassette.data == []e + assert not cassette.dirty + + def test_vcr_path_transformer(): # Regression test for #199 diff --git a/vcr/cassette.py b/vcr/cassette.py index db94224..2f5c293 100644 --- a/vcr/cassette.py +++ b/vcr/cassette.py @@ -211,6 +211,8 @@ class Cassette(object): if not request: return response = self._before_record_response(response) + if response is None: + return self.data.append((request, response)) self.dirty = True