⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mockcallsequencetest.groovy

📁 大名鼎鼎的java动态脚本语言。已经通过了sun的认证
💻 GROOVY
字号:
package groovy.mock.interceptorimport junit.framework.AssertionFailedError/*    Testing Groovy Mock support for multiple calls to the Collaborator with    demanding one or two methods multiple and and various ranges.    @author Dierk Koenig*/class MockCallSequenceTest extends GroovyTestCase {    MockFor mocker    void setUp() {        mocker = new MockFor(Collaborator.class)    }    void testUndemandedCallFailsEarly() {        // no demand here        mocker.use {            def caller = new Caller()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testOneDemandedTwoCalledFailsEarly() {        mocker.demand.one { 1 }        mocker.use {            def caller = new Caller()            caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testOneDemandedDefaultRange() {        mocker.demand.one(1..1) { 1 }        mocker.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()        }    }    void testOneDemandedExactRange() {        mocker.demand.one(2..2) { 1 }        mocker.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testOneDemandedRealRange() {        mocker.demand.one(1..2) { 1 }        mocker.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testOneDemandedOptionalRange() {        mocker.demand.one(0..2) { 1 }        mocker.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testTwoDemandedNoRange() {        mocker.demand.one() { 1 }        mocker.demand.two() { 2 }        mocker.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }        }    }    void testTwoDemandedFirstRangeExploited() {        mocker.demand.one(1..2) { 1 }        mocker.demand.two() { 2 }        mocker.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }        }    }    void testTwoDemandedFirstRangeNotExploited() {        mocker.demand.one(1..2) { 1 }        mocker.demand.two() { 2 }        mocker.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }        }    }    void testTwoDemandedFirstOptionalOmitted() {        mocker.demand.one(0..2) { 1 }        mocker.demand.two() { 2 }        mocker.use {            def caller = new Caller()            assertEquals 2, caller.collaborateTwo()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }        }    }    void testMixedDemandedMinimum() {        mocker.demand.one(0..1) { 1 }        mocker.demand.two() { 2 }        mocker.demand.one() { 1 }        mocker.demand.two(0..2) { 2 }        mocker.demand.one() { 1 }        mocker.use {            def caller = new Caller()            assertEquals 2, caller.collaborateTwo()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testMixedDemandedMaximum() {        mocker.demand.one(0..1) { 1 }        mocker.demand.two() { 2 }        mocker.demand.one() { 1 }        mocker.demand.two(0..2) { 2 }        mocker.demand.one() { 1 }        mocker.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            assertEquals 1, caller.collaborateOne()            // 2.times( assertEquals(2, caller.collaborateTwo()) ) // todo: why this not possible?            assertEquals 2, caller.collaborateTwo()            assertEquals 2, caller.collaborateTwo()            assertEquals 1, caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testMixedDemandedOutOfSequenceFailsEarly() {        mocker.demand.one(0..1) { 1 }        mocker.demand.two() { 2 }        mocker.demand.one() { 1 }        mocker.demand.two(0..2) { 2 }        mocker.demand.one() { 1 }        shouldFail(AssertionFailedError.class) { // fails on verify            mocker.use {                def caller = new Caller()                assertEquals 1, caller.collaborateOne()                assertEquals 2, caller.collaborateTwo()                shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }            }        }    }    void testRangeDemandedButNotExploitedFailsOnVerify() {        mocker.demand.one(2..4) { 1 }        shouldFail(AssertionFailedError.class) { // fails on verify            mocker.use {                def caller = new Caller()                assertEquals 1, caller.collaborateOne()            }        }    }    void testReversedRangesNotAllowed() {        shouldFail(IllegalArgumentException.class) { mocker.demand.one(1..0) { 1 } }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -