2016-11-01 18:27 GMT+01:00 Attila Magyar <m.magyar3@gmail.com>:
> They have strings. And first mock libraries used message names as strings

They are not the same. Method rename and find senders works with symbols but
not with strings. Some rarely used refactorings might not work, although
this is probably a technical limitation of the refactoring engine and not a
conceptual one.

No matter. This is what we have. And with message based approach this problem not exists at all.
��
2016-11-01 18:27 GMT+01:00 Attila Magyar��<m.magyar3@gmail.com>:
>�� not believe that anybody would prefer writing

In Ruby this would look like something like this.

allow(socket).to receive(:connect).with(address, port, timeout) {
do_something }

This is exactly what I said: with C-like syntax it is normal but not with keyword messages.
��

Not so different and many people use this. Probably lot more than the users
of Mocketry + BabyMock together.��

(Anyways probably I wouldn't use a mock library to stub an object like a
socket. It is not my own type, too low-level abstraction. It results brittle
tests no matter what syntax is used.)

It was just example where everybody could see agliness of string based approach.



>�� It leads to more code which you will write again and again in your tests

If I have too many code for setting up expectations and mocks that is a
clear clue that something went wrong in my test,

I use mocks in most unit tests. So in every test I will need to repeat all this code.
��
and I rather have a mock
library that makes this painful early on. It is really easy to make a mess
with mock object based tests. This is why I still prefer jMock over any
other mock object library (mockito, easymock) in Java. JMock is a highly
opinionated library that deliberately doesn't support features like deep
stubbing, partial mocking and other black magic stuffs. BabyMock follows a
similar philosophy.

Smalltalk is super powerful language which allows easily create and run tons of spaghetti code.
But with C++ it is sometime impossible to just compile spaghetti code. So C++ prevents programmers from writing bad code because without discipline you can't run your program.
So if you want to be good programmer choose C++.
(sorry for sarcasm)