https://laravel.com/docs/5.7/mocking
Если вы хотите подделать прослушиватели событий только для части вашего теста, вы можете использовать Метод fakeFor:
blockquote>$order = Event::fakeFor(function () { $order = factory(Order::class)->create(); Event::assertDispatched(OrderCreated::class); return $order; }); // Events are dispatched as normal and observers will run ... $order->update([...]);
Все внутри
function() {}
будет иметь поддельные события. Все снаружи будет функционировать нормально.
Нет действительно лучшего пути, чем это, хотя я склонен помещать часть цикличного выполнения в a CopyTo
дополнительный метод, например.
public static void CopyTo(this Stream source, Stream destination)
{
var buffer = new byte[0x1000];
int bytesInBuffer;
while ((bytesInBuffer = source.Read(buffer, 0, buffer.Length)) > 0)
{
destination.Write(buffer, 0, bytesInBuffer);
}
}
Который Вы могли затем назвать как:
fsin.CopyTo(ds);
Теперь, когда я думаю об этом, я никогда не видел встроенной поддержки передачи по каналу результатов входного потока непосредственно в поток вывода, как Вы описываете. Эта статья о MSDN имеет некоторый код для класса "StreamPipeline", который делает вид вещи, которую Вы описываете.