• jjjalljs@ttrpg.network
    link
    fedilink
    arrow-up
    7
    ·
    16 hours ago
    
    with patch("some_file.requests.get", side_effect=SomeException("oh no")):
      result = func_using_requests()
    

    Though not every language makes mocking as easy, and multiple responsibilities in a single function can quickly get messy.

    • Tamo240@programming.dev
      link
      fedilink
      arrow-up
      5
      ·
      14 hours ago

      Oh I’m fully aware that python lets you cheat dependency injection with patch, its one of the many things python teaches developers to do wrong, which leads them to be unable to use any other language.

      • jjjalljs@ttrpg.network
        link
        fedilink
        arrow-up
        1
        ·
        12 hours ago

        I vaguely remember Java also has mocking libraries, as does JavaScript. (Though JavaScript isn’t a language I’d hold up as the ideal.)

        • Tamo240@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          11 hours ago

          While my experience is mostly C++, I assume these mocking libraries are similar in allowing you to create a class that can report it’s own usage, and allow for arbitrary returns values and side effects, which is incredibly useful, especially in conjunction with dependency injection.

          What patch lets you do is directly overwrite the functionality of private member functions on the fly, which if Java/JavaScript can do I’d love to know, I thought this was a uniquely Pythonic magic.