• Почему 0.35 -> toFixed(1) = 0.3?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    какая несправедливость:
    [.05, .15, .25, .35, .45, .55, .65, .75, .85, .95]
    .map(v => `${v} - ${v.toFixed(1)}`).join("\n");
    /*
    0.05 - 0.1
    0.15 - 0.1
    0.25 - 0.3
    0.35 - 0.3
    0.45 - 0.5
    0.55 - 0.6
    0.65 - 0.7
    0.75 - 0.8
    0.85 - 0.8
    0.95 - 0.9
    */
    1-1, 3-3, 8-8
    Ответ написан
    Комментировать
  • Как менять расположение блока в мобильных устройствах?

    @wonderingpeanut
    Для начала нужно выяснить ширину экрана.
    const [screenW, setScreenW] = useState(undefined);
    useEffect(() => {
      setScreenW(window.innerWidth);
    }, []);

    Когда знаем ширину экрана, дальше все просто.
    Если ширина экрана такая-то, отрисовываем один элемент. Если другая, отрисовываем другой элемент
    const Component = () => {
      ...
      return (
        ...
        {screenW >= 1024 && <BigScreenComponent />}
        <SomeOtherComponent />
        {screenW < 1024 && <SmallScreenComponent />}
        ...
    );
    Ответ написан
    Комментировать
  • Как создать mock в unit тестах laravel?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Вы наследуете свой класс теста от PHPUnit и удивляетесь, что в нём нет методов Laravel.

    P.S.
    я хотел потестить listener отдельно unit тестом (проверить, что метод handle вызывается и никто его не удалил)
    Здесь разумно сделать три теста:
    1. Что в вашем коде генерируется нужное событие в нужном месте. Проверяется только генерация, не смотрим, слушает ли кто-то это событие или нет.
    2. Что ваш EventServiceProvider настроен таким образом, что для этого события указан нужный слушатель. Здесь мы не смотрим, генерируется ли где-либо это событие и работает ли слушатель.
    3. Что ваш слушатель корректно работает, получив событие. Здесь вы просто руками вызываете его метод handle, передавая туда событие (как правило классы событий простые и их нет смысла мокать, проще создать нормально, но бывают и исключения) и проверяете его бизнес-логику.


    Такой подход предполагает, что вы доверяете фреймворку и не тестируете логику его работы. Он теоретически может дать осечку или вы можете что-то сломать (например, выключить EventServiceProvider), но вероятность такого развития событий очень мала, зато такой подход очень сильно упрощает написание тестов.

    P.P.S. Если у вас в событии есть метод notify, то вы что-то делаете неправильно. События - это DTO, в них не должно быть бизнес-логики.
    Ответ написан
    Комментировать
  • Что делает runtimeChunk: 'single'?

    bingo347
    @bingo347
    Crazy on performance...
    У webpack есть некоторый runtime код, который позволяет ему эмулировать модули внутри бандла и подгружать чанки. По умолчанию этот код расположен в чанке, который содержит entry point модуль (модуль, с которого запускается вся Ваша js программа).
    Но так же у Вас может быть несколько entry point, каждый по сути соберется в свой бандл. Иногда есть необходимость, чтоб несколько таких бандлов работали на одной странице. И в каждом будет вшит рантайм код webpack. Мало того, что это дублирование кода, он будет конфликтовать между собой при подгрузке чанков если Вы не переопределите имя глобальной переменной webpack, чтоб оно было разным для каждого такого бандла.
    Для решения этих проблем и используется runtimeChunk: 'single', который выносит весь runtime код webpack в отдельный чанк и позволяет переиспользовать его для всех бандлов.
    Ответ написан
    Комментировать