Say I want to write ten tests for different aspects of a web service point.
Apart from the risk of relying on an external service, I'd like to poll the web service once rather than ten times. I wondering about the feasibility of memorizing data between test methods. Taking for example... TestCase subclass: #MyTest ... My understanding is that MyTest >> setUp is run once per test method. What I guess is missing is a #groupSetup that would be called at the start of a running a group of tests. MyTest >> groupSetup memorized := Dictionary new. MyTest >> getLiveDataOncePerRun ^ memorized at: 'data' ifAbsentPut: [ZnClient new get: 'http://someservice.com/liveData1'. MyTest >> test1 |data| data := self
getLiveDataOncePerRun . self assert: data result1 equals: 'expected result 1' MyTest >> test2 |data| data := self
getLiveDataOncePerRun. self assert: data result2 equals: 'expected result 2' cheers -ben |
Hi Ben, take a look at TestResource (its comment and subclasses). It should do what you are looking for. Peter On Sun, Sep 9, 2018 at 8:08 AM Ben Coman <[hidden email]> wrote:
|
That seems to be exactly what I'm looking for. Thanks Peter.
cheers -ben On Sun, 9 Sep 2018 at 16:11, Peter Uhnak <[hidden email]> wrote:
|
In reply to this post by Peter Uhnak
You can use a TestResource for it, and use some sort of memoization.
I don't know if there is a library for memoization in Pharo, but if the HTTP calls are not that many you can implement it by having a cache in the test resource, implemented as a dictionary, with the URL as key and its cached response as value. Regards, Esteban A. Maringolo El dom., 9 sept. 2018 a las 5:11, Peter Uhnak (<[hidden email]>) escribió: > > Hi Ben, > > take a look at TestResource (its comment and subclasses). It should do what you are looking for. > > Peter > > On Sun, Sep 9, 2018 at 8:08 AM Ben Coman <[hidden email]> wrote: >> >> Say I want to write ten tests for different aspects of a web service point. >> Apart from the risk of relying on an external service, >> I'd like to poll the web service once rather than ten times. >> I wondering about the feasibility of memorizing data between test methods. >> Taking for example... >> TestCase subclass: #MyTest ... >> >> My understanding is that MyTest >> setUp is run once per test method. >> What I guess is missing is a #groupSetup that would be called at the start of a running a group of tests. >> >> MyTest >> groupSetup >> memorized := Dictionary new. >> >> MyTest >> getLiveDataOncePerRun >> ^ memorized at: 'data' ifAbsentPut: [ZnClient new get: 'http://someservice.com/liveData1'. >> >> MyTest >> test1 >> |data| >> data := self getLiveDataOncePerRun . >> self assert: data result1 equals: 'expected result 1' >> >> MyTest >> test2 >> |data| >> data := self getLiveDataOncePerRun. >> self assert: data result2 equals: 'expected result 2' >> >> cheers -ben >> |
Free forum by Nabble | Edit this page |