Testify
- Use `assert` package for soft assertions that continue on failure, `require` for hard assertions that stop the test. Use `suite.Suite` for test setup/teardown with `SetupTest()`/`TearDownTest()`.
Testify
- Use `assert` package for soft assertions that continue on failure, `require` for hard assertions that stop the test. Use `suite.Suite` for test setup/teardown with `SetupTest()`/`TearDownTest()`.
- Use `mock.Mock` embedded in structs for mocking interfaces — define expected calls with `.On("Method", args).Return(values)`. Assert expectations with `mock.AssertExpectations(t)`. Use `assert.JSONEq()` for JSON comparison ignoring key order. Use `assert.WithinDuration()` for time-based assertions.