Comments (5)
Hi, this works exactly as it's supposed to. When PHP does not allow you to define the precise property type via native types, you need to add a PHPDoc.
The correct way to typehint this is MockInterface&Foo, see the differences between union types and intersection types: https://phpstan.org/blog/union-types-vs-intersection-types
There's a hardcoded exception so that MockInterface|Foo is also interpreted as an intersection type because that's what people mean when they write that.
I don't plan to infer the assigned type from the setUp() method, that's not what the extensions support.
from phpstan-mockery.
Thanks for the explanation.
There's a hardcoded exception so that MockInterface|Foo is also interpreted as an intersection type because that's what people mean when they write that.
Btw, I was aware of the intersection typing. Somehow people keep on adding the union types in our codebase. Would it be possible to make this configurable? So that you can only use intersect? (willing to create the PR if you agree).
from phpstan-mockery.
Would it be possible to make this configurable?
Yes, it's easy.
- Create a new bool parameter for this.
- Remove the tag from this service definiton:
phpstan-mockery/extension.neon
Lines 60 to 63 in 053bf9e
- Create a new conditionalTags section like here: https://github.com/phpstan/phpstan-src/blob/6f7cadf96c7b55a0df21b51730e4b53ad13a7545/conf/config.level4.neon#L20-L30
from phpstan-mockery.
@ondrejmirtes Like this #28 :D ?
from phpstan-mockery.
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
from phpstan-mockery.
Related Issues (19)
- Expects Mockery\Expectation, PHPStan\Mockery\Type\Expects given.
- Call to an undefined method Mockery\ExpectationInterface|Mockery\ExpectsHigherOrderMessage::once() HOT 3
- PHPStan 0.12 compatible HOT 2
- Call to method PHPStan\Mockery\Type\Expects::never() on a separate line has no effect. HOT 13
- PHPStan reports error when using alternative syntax of shouldReceive method HOT 3
- Call to protected method xxx()
- New release for phpstan 0.12? HOT 5
- Passing an array as $methodNames argument in LegacyMockerInterface::shouldReceive() results in error HOT 10
- Some currently unsupported cases HOT 3
- Calling PHPStan\Mockery\Type\Expects::with() is not covered by backward compatibility promise. HOT 6
- Mockery::spy(function) should be callable HOT 1
- Call to an undefined method xxx::shouldReceive() HOT 2
- Dependency Dashboard
- Missing mock type information for Mockery\Expectation::getMock() HOT 1
- Incorrect doc blocks for shouldHaveReceived and shouldNotHaveReceived HOT 3
- Require unit tests to call `Mockery::close()` or use `MockeryPHPUnitIntegration` trait HOT 2
- Support makePartial() HOT 4
- Call to an undefined method Mockery\Expectation::shouldReceive() after chaining onto `andReturn` HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from phpstan-mockery.