rooibos icon indicating copy to clipboard operation
rooibos copied to clipboard

Update Auto Asserting Mocks to better handle async tests

Open chrisdp opened this issue 1 year ago • 1 comments

The current implementation related to Auto Asserting Mocks will always call clean and assert stubs and mocks the moment after calling the test group. This results in anything that happens async after that initial call will have it's stubs and mocks blown away. We should update this logic to be called after the group completes for async tests.

Consider the following test for example:

@async
@it("async with stub call for node function")
function _()
  m.stubCall(SetLabelText, function(text)
    m.wasCalled = true
    m.testSuite.assertEqual(text, "")
    m.testSuite.assertTrue(true)
    m.testSuite.done()
    ? "done three"
  end function)

  delayCall(0.02, SetLabelText)
end function

The current logic would result in the stub for SetLabelText to be cleared before it was ever called.

chrisdp avatar Jan 20 '24 17:01 chrisdp

As part of #259 the auto asserting was disabled by default for async tests. The scope of this ticket would be to re-enable this functionality, but for it to respect the completion of the Async test.

chrisdp avatar Jan 24 '24 13:01 chrisdp