On Wednesday, 3 November 2021 at 21:51:49 UTC axel.wa...@googlemail.com wrote:
> On Wed, Nov 3, 2021 at 10:44 PM Matt Mueller <mattm...@gmail.com> wrote: > >> Hey, thanks. I'm aware of this approach. >> >> I'm hoping for some technique that automatically injects, since it can be >> cumbersome to inject all your dependencies by hand. >> > > I don't understand what you mean. Obviously, how to connect to a database > or other dependencies is highly application specific. So you'd still have > to write both the code to create the connections and somehow mention what > dependencies you need in the test. > Perhaps he's thinking of something like pytest. Simply by adding a named argument to your test function, a corresponding helper is called to create the value. There is a 'yield' variation so that the helper can also handle cleanup after the test; and helpers can invoke other helpers in the same way. @pytest.yield_fixture(scope='function') def session(): db_session = make_session() yield db_session db_session.close() @pytest.fixture(scope='function') def customer(session): c = Customer(name="Fred") session.add(c) return c # The actual tests def test_foo(session, customer): assert session is not None assert customer is not None def test_bar(session, customer): ... another test It reduces the boilerplate somewhat - in go, each test would be something like func test_foo() { session := make_session() defer session.close() customer := make_customer(session) ... rest of test } which is actually not unreasonable IMO. pytest also lets you have objects with longer lifetimes (scopes), so that multiple tests within the same package or session can share the same object. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/9dfa197a-fa6b-4db1-b231-1de872b0b8e4n%40googlegroups.com.