mock_objects_test.php.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 995 行 · 第 1/3 页
SVN-BASE
995 行
} function testSequenceFallback() { $mock = &new MockDummy(); $mock->setReturnValueAt(0, "aMethod", "aaa", array('a')); $mock->setReturnValueAt(1, "aMethod", "bbb", array('a')); $mock->setReturnValue("aMethod", "AAA"); $this->assertIdentical($mock->aMethod('a'), "aaa"); $this->assertIdentical($mock->aMethod('b'), "AAA"); } function testMethodInterference() { $mock = &new MockDummy(); $mock->setReturnValueAt(0, "anotherMethod", "aaa"); $mock->setReturnValue("aMethod", "AAA"); $this->assertIdentical($mock->aMethod(), "AAA"); $this->assertIdentical($mock->anotherMethod(), "aaa"); }}class TestOfMockExpectationsThatPass extends UnitTestCase { function testAnyArgument() { $mock = &new MockDummy(); $mock->expect('aMethod', array('*')); $mock->aMethod(1); $mock->aMethod('hello'); } function testAnyTwoArguments() { $mock = &new MockDummy(); $mock->expect('aMethod', array('*', '*')); $mock->aMethod(1, 2); } function testSpecificArgument() { $mock = &new MockDummy(); $mock->expect('aMethod', array(1)); $mock->aMethod(1); } function testExpectation() { $mock = &new MockDummy(); $mock->expect('aMethod', array(new IsAExpectation('Dummy'))); $mock->aMethod(new Dummy()); } function testArgumentsInSequence() { $mock = &new MockDummy(); $mock->expectAt(0, 'aMethod', array(1, 2)); $mock->expectAt(1, 'aMethod', array(3, 4)); $mock->aMethod(1, 2); $mock->aMethod(3, 4); } function testAtLeastOnceSatisfiedByOneCall() { $mock = &new MockDummy(); $mock->expectAtLeastOnce('aMethod'); $mock->aMethod(); } function testAtLeastOnceSatisfiedByTwoCalls() { $mock = &new MockDummy(); $mock->expectAtLeastOnce('aMethod'); $mock->aMethod(); $mock->aMethod(); } function testOnceSatisfiedByOneCall() { $mock = &new MockDummy(); $mock->expectOnce('aMethod'); $mock->aMethod(); } function testMinimumCallsSatisfiedByEnoughCalls() { $mock = &new MockDummy(); $mock->expectMinimumCallCount('aMethod', 1); $mock->aMethod(); } function testMinimumCallsSatisfiedByTooManyCalls() { $mock = &new MockDummy(); $mock->expectMinimumCallCount('aMethod', 3); $mock->aMethod(); $mock->aMethod(); $mock->aMethod(); $mock->aMethod(); } function testMaximumCallsSatisfiedByEnoughCalls() { $mock = &new MockDummy(); $mock->expectMaximumCallCount('aMethod', 1); $mock->aMethod(); } function testMaximumCallsSatisfiedByNoCalls() { $mock = &new MockDummy(); $mock->expectMaximumCallCount('aMethod', 1); }}class MockWithInjectedTestCase extends SimpleMock { function &_getCurrentTestCase() { $context = &SimpleTest::getContext(); $test = &$context->getTest(); return $test->getMockedTest(); }}SimpleTest::setMockBaseClass('MockWithInjectedTestCase');Mock::generate('Dummy', 'MockDummyWithInjectedTestCase');SimpleTest::setMockBaseClass('SimpleMock');Mock::generate('SimpleTestCase');class LikeExpectation extends IdenticalExpectation { function LikeExpectation($expectation) { $expectation->_message = ''; $this->IdenticalExpectation($expectation); } function test($compare) { $compare->_message = ''; return parent::test($compare); } function testMessage($compare) { $compare->_message = ''; return parent::testMessage($compare); }}class TestOfMockExpectations extends UnitTestCase { var $test; function setUp() { $this->test = &new MockSimpleTestCase(); } function &getMockedTest() { return $this->test; } function testSettingExpectationOnNonMethodThrowsError() { $mock = &new MockDummyWithInjectedTestCase(); $mock->expectMaximumCallCount('aMissingMethod', 2); $this->assertError(); } function testMaxCallsDetectsOverrun() { $this->test->expectOnce('assert', array( new LikeExpectation(new MaximumCallCountExpectation('aMethod', 2)), 3)); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectMaximumCallCount('aMethod', 2); $mock->aMethod(); $mock->aMethod(); $mock->aMethod(); $mock->_mock->atTestEnd('testSomething', $this->test); } function testTallyOnMaxCallsSendsPassOnUnderrun() { $this->test->expectOnce('assert', array( new LikeExpectation(new MaximumCallCountExpectation('aMethod', 2)), 2)); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectMaximumCallCount("aMethod", 2); $mock->aMethod(); $mock->aMethod(); $mock->_mock->atTestEnd('testSomething', $this->test); } function testExpectNeverDetectsOverrun() { $this->test->expectOnce('assert', array( new LikeExpectation(new MaximumCallCountExpectation('aMethod', 0)), 1)); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectNever('aMethod'); $mock->aMethod(); $mock->_mock->atTestEnd('testSomething', $this->test); } function testTallyOnExpectNeverStillSendsPassOnUnderrun() { $this->test->expectOnce('assert', array( new LikeExpectation(new MaximumCallCountExpectation('aMethod', 0)), 0)); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectNever('aMethod'); $mock->_mock->atTestEnd('testSomething', $this->test); } function testMinCalls() { $this->test->expectOnce('assert', array( new LikeExpectation(new MinimumCallCountExpectation('aMethod', 2)), 2)); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectMinimumCallCount('aMethod', 2); $mock->aMethod(); $mock->aMethod(); $mock->_mock->atTestEnd('testSomething', $this->test); } function testFailedNever() { $this->test->expectOnce('assert', array( new LikeExpectation(new MaximumCallCountExpectation('aMethod', 0)), 1)); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectNever('aMethod'); $mock->aMethod(); $mock->_mock->atTestEnd('testSomething', $this->test); } function testUnderOnce() { $this->test->expectOnce('assert', array( new LikeExpectation(new CallCountExpectation('aMethod', 1)), 0)); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectOnce('aMethod'); $mock->_mock->atTestEnd('testSomething', $this->test); } function testOverOnce() { $this->test->expectOnce('assert', array( new LikeExpectation(new CallCountExpectation('aMethod', 1)), 2)); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectOnce('aMethod'); $mock->aMethod(); $mock->aMethod(); $mock->_mock->atTestEnd('testSomething', $this->test); } function testUnderAtLeastOnce() { $this->test->expectOnce('assert', array( new LikeExpectation(new MinimumCallCountExpectation('aMethod', 1)), 0)); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectAtLeastOnce("aMethod"); $mock->_mock->atTestEnd('testSomething', $this->test); } function testZeroArguments() { $this->test->expectOnce('assert', array( new LikeExpectation(new ParametersExpectation(array())), array(), '*')); $mock = &new MockDummyWithInjectedTestCase(); $mock->expect("aMethod", array()); $mock->aMethod(); $mock->_mock->atTestEnd('testSomething', $this->test); } function testExpectedArguments() { $this->test->expectOnce('assert', array( new LikeExpectation(new ParametersExpectation(array(1, 2, 3))), array(1, 2, 3), '*')); $mock = &new MockDummyWithInjectedTestCase(); $mock->expect('aMethod', array(1, 2, 3)); $mock->aMethod(1, 2, 3); $mock->_mock->atTestEnd('testSomething', $this->test); } function testFailedArguments() { $this->test->expectOnce('assert', array( new LikeExpectation(new ParametersExpectation(array('this'))), array('that'), '*')); $mock = &new MockDummyWithInjectedTestCase(); $mock->expect('aMethod', array('this')); $mock->aMethod('that'); $mock->_mock->atTestEnd('testSomething', $this->test); } function testWildcardsAreTranslatedToAnythingExpectations() { $this->test->expectOnce('assert', array( new LikeExpectation(new ParametersExpectation(array( new AnythingExpectation(), 123, new AnythingExpectation()))), array(100, 123, 101), '*')); $mock = &new MockDummyWithInjectedTestCase($this); $mock->expect("aMethod", array('*', 123, '*')); $mock->aMethod(100, 123, 101); $mock->_mock->atTestEnd('testSomething', $this->test); } function testSpecificPassingSequence() { $this->test->expectAt(0, 'assert', array( new LikeExpectation(new ParametersExpectation(array(1, 2, 3))), array(1, 2, 3), '*')); $this->test->expectAt(1, 'assert', array( new LikeExpectation(new ParametersExpectation(array('Hello'))), array('Hello'), '*')); $mock = &new MockDummyWithInjectedTestCase(); $mock->expectAt(1, 'aMethod', array(1, 2, 3)); $mock->expectAt(2, 'aMethod', array('Hello')); $mock->aMethod(); $mock->aMethod(1, 2, 3); $mock->aMethod('Hello'); $mock->aMethod(); $mock->_mock->atTestEnd('testSomething', $this->test); } function testNonArrayForExpectedParametersGivesError() { $mock = &new MockDummyWithInjectedTestCase(); $mock->expect("aMethod", "foo"); $this->assertErrorPattern('/\$args.*not an array/i'); $mock->aMethod(); $mock->tally(); $mock->_mock->atTestEnd('testSomething', $this->test); }}class TestOfMockComparisons extends UnitTestCase { function testEqualComparisonOfMocksDoesNotCrash() { $expectation = &new EqualExpectation(new MockDummy()); $this->assertTrue($expectation->test(new MockDummy(), true)); } function testIdenticalComparisonOfMocksDoesNotCrash() { $expectation = &new IdenticalExpectation(new MockDummy()); $this->assertTrue($expectation->test(new MockDummy())); }}class ClassWithSpecialMethods { function __get($name) { } function __set($name, $value) { } function __isset($name) { } function __unset($name) { } function __call($method, $arguments) { }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?