In reply to Sandeep Gaur:
Just review your code quickly, it seems the issue happened because you created new object handle spi_wr_rd_req (copied from wr_rd_request) in collect_wr_rd_req task.
task spi_bfm::collect_wr_rd_req (spi_trans wr_rd_request); // {
@(posedge spi_intf.sample_clk)
spi_wr_rd_req = new wr_rd_request;
The response read data was stored in spi_wr_rd_req object, instead of wr_rd_request object handler (spi_seq_item object) which was used to send back to your sequence.
To fix, do not create new object, use assignment only:
spi_wr_rd_req = wr_rd_request;