Вы можете попробовать использовать "typeid" .
Это не работает для имени объекта, но вы знаете имя объекта, поэтому вам просто нужно его сохранить где-то. Компилятору все равно, что вы начертили объект.
Его стоит иметь в виду, однако, что вывод typeid является спецификой компилятора, поэтому даже если он производит то, что вы делаете на текущей платформе он не может по другому. Это может быть или не быть проблемой для вас.
Другое решение - создать какую-то оболочку шаблона, в которой вы храните имя класса. Затем вам нужно использовать частичную специализацию, чтобы вернуть ее исправьте имя класса для вас.
Edit: Быть более явным
template< typename Type > class ClassName
{
public:
static std::string name()
{
return "Unknown";
}
};
Затем для каждого класса somethign liek следующее:
template<> class ClassName
{
public:
static std::string name()
{
return "MyClass";
}
};
Что может быть даже макросом следующим образом:
#define DefineClassName( className ) \
\
template<> class ClassName \
{ \
public: \
static std::string name() \
{ \
return #className; \
} \
}; \
Позволяет вам просто
DefineClassName( MyClass );
Наконец, чтобы получить имя класса, d выполните следующие действия:
ClassName< MyClass >::name();
Edit2: в дальнейшем вам нужно будет поместить это макрос «DefineClassName» в каждый класс, который вы создали, и определить функцию «имя класса», которая вызовет функцию статического шаблона .
Edit3: И подумайте об этом ... Очевидно, что плохое опубликование первой вещи по утрам, как вы можете, просто определить функцию-член «classname ()» следующим образом:
std::string classname()
{
return "MyClass";
}
, который может быть macro'd следующим образом:
DefineClassName( className ) \
std::string classname() \
{ \
return #className; \
}
Тогда вы можете просто просто отбросить
DefineClassName( MyClass );
в класс, как вы его определяете ...
В настоящее время Cypress cy.route
может блокировать только сетевые запросы, использующие XHRs
Собственные элементы формы HTML не используют XMLHTTPRequest , поэтому вы не можете используйте cy.route
, чтобы заглушить его.
Большинство людей не сталкиваются с этой проблемой, потому что использование нативных форм HTML не так распространено в наши дни
Вы также waiting
на маршрут, но на самом деле ничего не сделал в вашем тесте. Ваш тест должен выглядеть примерно так:
cy.route('GET',
'**/getIncentives*',
{info: {}, results: {}}
).as('oppty');
// cypress code that would cause a network request.
cy.wait('@oppty');
Cypress найдет сетевой запрос только после того, как будет псевдонимом. Код в вашем вопросе указал, что вы не выполняете действие, которое вызовет сетевой запрос:
cy.route('GET',
'**/getIncentives*',
{info: {}, results: {}}
).as('oppty');
// cypress expected something to cause a network request here
cy.wait('@oppty');
Вы должны либо переместить вызов на route
ранее в тесте, либо переместить код, вызывающий запрос после звонка в route
.