我正在使用 gitlab 社区版 14.4.1 以及一个版本 14.4.0 的 gitlab 运行程序。其配置如下:
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "My runner"
limit = 1
url = "https://my-gitlab-instance.com"
token = "my-gitlab-token"
executor = "docker"
[runners.custom_build_dir]
enabled = true
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "gitlab/dind:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/builds:/builds:rw", "/cache"]
shm_size = 1000000000
Run Code Online (Sandbox Code Playgroud)
特别注意两个选项
concurrent = 1
Run Code Online (Sandbox Code Playgroud)
和
[[runners]]
limit = 1 …Run Code Online (Sandbox Code Playgroud) 根据文档,我编写了一个包含以下逻辑的 Vue 组件:
import debounce from 'lodash/debounce'
export default {
[...]
created () {
this.debouncedOnSubmit = debounce(this.doSubmit, 1000)
},
[...]
Run Code Online (Sandbox Code Playgroud)
这背后的想法是我的表单debouncedOnSubmit在提交表单时调用该方法:
<button
name="order-basket"
type="submit"
@click.prevent="debouncedOnSubmit"
>
Click me!
</button>
Run Code Online (Sandbox Code Playgroud)
现在,该代码在我的应用程序以及我的笑话测试中运行良好。例如,使用 vue test utils,我可以触发click该按钮上的事件,并且可以成功验证单击该按钮时应该发生的相关内容。
但是,我收到以下恼人的警告:
[Vue warn]: Error in v-on handler: "TypeError: _vm.debouncedOnSubmit is not a function"
Run Code Online (Sandbox Code Playgroud)
我部分理解为什么我会收到该警告。确实,我this.debouncedOnSubmit在created()钩子中定义了。尽管该方法返回一个函数,但 Jest 很可能不理解该变量的含义debounce。
如何让 jest 理解这debouncedOnSubmit是一个函数?我需要配置什么?
我不想禁用警告,如此处所述,因为我确实想在测试中保留有关我的行为的反馈。大多数时候,这些警告确实很有帮助,但我对关闭它们感到不舒服。我该如何编写代码才能修复此警告?
[Vue warn]: Error in v-on handler: "TypeError: _vm.debouncedOnSubmit is …Run Code Online (Sandbox Code Playgroud) 我正在为我的应用程序的登录功能编写验收测试。在某些时候,我想仔细检查 cookie 的过期时间。
单击“登录”按钮后,一个 graphql 查询将发送到我的服务器,该服务器以 Jwt 进行响应。收到 jwt 后,应用程序将设置 cookie
document.cookie = ...
Run Code Online (Sandbox Code Playgroud)
在我的 Cypress 测试中,我通过以下方式检查令牌:
Then("sa session s'ouvre pour {SessionDurationType}", expectedDuration => {
cy.get('@graphql').then(() => {
cy.wait(1000)
cy.getCookie('token').then(cookie => {
const tokenDuration = getTokenDuration(cookie.value)
expect(tokenDuration.asSeconds()).to.equal(expectedDuration.asSeconds())
})
})
})
Run Code Online (Sandbox Code Playgroud)
使用cy.get('@graphql'),我正在等待 graphql 查询返回响应。别名定义如下:
cy.stub(win, 'fetch', fetch).as('graphql')
Run Code Online (Sandbox Code Playgroud)
收到后,应用程序会设置 cookie。
我的问题是我不喜欢以下调用:
cy.wait(1000)
Run Code Online (Sandbox Code Playgroud)
如果没有那个调用,我总是会得到一个未定义的 cookie。
有没有办法在远小于 1000 毫秒的时间内获取该 cookie?我尝试了很多事情但没有成功......
我必须执行一个非常简单的任务:我想在一个矩形内显示一段文本,该矩形的大小应该正好是文本的宽度。
在 C++ 中,这很容易做到。只需定义 QString 并应用 QFontMetrics 即可获得其宽度。然后定义矩形图形元素以具有该大小。它在五分钟内完成。
I have heard that QML is easier to use. Therefore, I was expecting to solve that problem in less than five minutes. I didn't, and I'm still stuck at it. Here's what I have tried:
Rectangle {
width: myText.contentWidth
height: myText.contentHeight
Text {
anchors.fill:parent
id: myText
font.family: "Helvetica"
font.pointSize: 50
text: qsTr("The string I want to display")
}
}
Run Code Online (Sandbox Code Playgroud)
This doesn't work for some reason I don't understand. I have found a …
我正在测试如下的库:
std::chrono::system_clock::time_point FromDateTime(const DateTime& dateTime)
{
std::tm tm{};
tm.tm_year = dateTime.Year - 1900;
tm.tm_mon = dateTime.Month - 1;
tm.tm_mday = dateTime.Day;
tm.tm_hour = dateTime.Hour;
tm.tm_min = dateTime.Minute;
tm.tm_sec = dateTime.Second;
const auto& time = std::mktime(&tm);
const auto& timePoint = std::chrono::system_clock::from_time_t(time);
return timePoint;
}
TEST_F(MyLibraryFixture, GetDateTime)
{
// Arrange
const auto& now = std::chrono::system_clock::now();
// Act
const auto& actual = _testee->GetDateTime();
// Assert
const auto& timeDiscrepanceInSec = std::chrono::duration_cast<std::chrono::seconds>(FromDateTime(actual) - now);
ASSERT_TRUE(timeDiscrepanceInSec.count() < 10);
}
Run Code Online (Sandbox Code Playgroud)
该DateTime类型只是带有上述使用字段的原始结构。电话
_testee->GetDateTime();
Run Code Online (Sandbox Code Playgroud)
返回一个DateTime结构体,日期时间实际上是 …
假设您已经QGraphicsRectItem在 C++ 中创建了以下自定义:
class MyCustomItem : public QGraphicsRectItem
{
public:
MyCustomItem(MyCustomItem* a_Parent = 0);
virtual ~MyCustomItem();
// specific methods
private:
// specific data
};
Run Code Online (Sandbox Code Playgroud)
还假设您在 QML 脚本中定义了一个ApplicationWindow:
// main.qml
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.0
ApplicationWindow {
id: myWindow
title: qsTr("My Window")
width: 640
height: 480
visible: true
}
Run Code Online (Sandbox Code Playgroud)
我想做的简单任务是显示MyCustomItemin that的实例ApplicationWindow。我想做以下事情:
// part of main.cpp
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
MyCustomItem* myItem; …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试为Android编写QML / C ++应用程序。在代码的某个地方,我有一个看起来像这样的类:
class MyClass : public QObject
{
Q_OBJECT
Q_PROPERTY(QString prop READ prop WRITE setProp NOTIFY propChanged)
public:
explicit MyClass(QObject* a_Parent = 0);
QString prop() const
{
return m_Prop;
}
void setProp(const QString& a_Value)
{
m_Prop = a_Value;
emit propChanged();
}
signals:
void propChanged();
private:
QString m_Prop;
};
Run Code Online (Sandbox Code Playgroud)
在我的QML资料中的某处,我有一个通过以下方式定义的Item:
ColumnLayout {
TextField {
id: myField
placeholderText: qsTr("Enter text")
Layout.fillWidth: true
Binding {
target: myClass
property: "prop"
value: myField.text
}
}
Run Code Online (Sandbox Code Playgroud)
当然,我做了一切必要的工作,以使MyClass类型的对象myClass在C ++和QML之间共享(作为上下文属性)。
现在,问题就出在下面:无论我在Android上的上述文本字段中键入什么,都不会将最后一个单词从myField.text传递到MyClass.m_Prop。例如,如果我在TextField中键入文本“我对此文本字段不满意”,则myClass.m_Prop将包含“我对此文本不满意”。但是,如果键入“我对这个TextField不满意”(注意空格),然后删除最后一个空格,则所需的字符串将存储在m_Prop变量中。
奇怪的是,这在Linux下工作得很好。有人可以告诉我我在这里想念的吗?我正在使用Qt 5.7和Android 6.0。
谢谢你的帮助 ...