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.

Reply via email to