Refactor RequestInformationTest to Reduce Redundancy and Simplify Mock Creation
Pull Request Description:
This pull request addresses issue #1374 by refactoring the RequestInformationTest class to eliminate redundant mock creations and simplify the testing code. Specifically, it introduces helper methods to centralize the creation and configuration of mocks for RequestAdapter and SerializationWriterFactory, reducing code duplication and enhancing readability.
Changes:
Added Methods:
createMockSerializationWriterFactory(SerializationWriter writer): Creates and configures a mock SerializationWriterFactory instance.
createMockRequestAdapter(SerializationWriterFactory factory): Creates and configures a mock RequestAdapter instance using the provided mock factory.
createMockRequestAdapter(SerializationWriter writer): Overload method that combines the creation of both mocks for convenience.
Here's the original issue:
Hi there!
While working with theRequestInformationTest class. I've noticed that there are 2 mock variables repeatedly created across various tests. To simplify the code, I propose a small refactor to eliminate these redundancies, which could reduce the code by 20 lines.
For instance, the mock creation logic is as follows:
final SerializationWriterFactory factoryMock = mock(SerializationWriterFactory.class);
when(factoryMock.getSerializationWriter(anyString())).thenReturn(writerMock);
final RequestAdapter requestAdapterMock = mock(RequestAdapter.class);
when(requestAdapterMock.getSerializationWriterFactory()).thenReturn(factoryMock);
To eliminate redundancy, We can create two methods that can be called repeatedly, createMockSerializationWriterFactory and createMockRequestAdapter:
public final SerializationWriterFactory createMockSerializationWriterFactory(SerializationWriter writer){
final SerializationWriterFactory factoryMock = mock(SerializationWriterFactory.class);
when(factoryMock.getSerializationWriter(anyString())).thenReturn(writer);
return factoryMock;
}
public final RequestAdapter createMockRequestAdapter(SerializationWriterFactory factory){
final RequestAdapter requestAdapterMock = mock(RequestAdapter.class);
when(requestAdapterMock.getSerializationWriterFactory()).thenReturn(factory);
return requestAdapterMock;
}
Using these methods, the refactored code becomes much cleaner:
final SerializationWriterFactory factoryMock = createMockSerializationWriterFactory(writer);
final RequestAdapter requestAdapterMock = createMockRequestAdapter(factoryMock );
And for further improvement, we can overload createMockRequestAdapter for a more streamlined approach:
public final RequestAdapter createMockRequestAdapter(SerializationWriter writer){
return createMockRequestAdapter(createMockSerializationWriterFactory(writer));
}
With this refactoring, mock creation and configuration can be done in a single line:
final RequestAdapter requestAdapterMock = createMockRequestAdapter(writerMock);
Pull Request Title:
Refactor
RequestInformationTest
to Reduce Redundancy and Simplify Mock CreationPull Request Description:
This pull request addresses issue #1374 by refactoring the
RequestInformationTest
class to eliminate redundant mock creations and simplify the testing code. Specifically, it introduces helper methods to centralize the creation and configuration of mocks forRequestAdapter
andSerializationWriterFactory
, reducing code duplication and enhancing readability.Changes:
Added Methods:
createMockSerializationWriterFactory(SerializationWriter writer)
: Creates and configures a mockSerializationWriterFactory
instance.createMockRequestAdapter(SerializationWriterFactory factory)
: Creates and configures a mockRequestAdapter
instance using the provided mock factory.createMockRequestAdapter(SerializationWriter writer)
: Overload method that combines the creation of both mocks for convenience.Here's the original issue:
Hi there!
While working with the
RequestInformationTest
class. I've noticed that there are 2 mock variables repeatedly created across various tests. To simplify the code, I propose a small refactor to eliminate these redundancies, which could reduce the code by 20 lines.RequestAdapter
Creation: Repeated 5 times.SerializationWriterFactory
Creation: Repeated 5 times.For instance, the mock creation logic is as follows:
To eliminate redundancy, We can create two methods that can be called repeatedly,
createMockSerializationWriterFactory
andcreateMockRequestAdapter
:Using these methods, the refactored code becomes much cleaner:
And for further improvement, we can overload
createMockRequestAdapter
for a more streamlined approach:With this refactoring, mock creation and configuration can be done in a single line: