我有一个VStack依赖该.onTapGesture方法的代码。像这样的东西:
VStack {
if imageShow {
Image("image1")
}
else {
Image("image2")
}
}
.onTapGesture {
imageShow.toggle()
}
Run Code Online (Sandbox Code Playgroud)
我想使用 XCTest 在 UI 测试中测试此行为。问题是,我不知道如何访问 VStack 以便.tap()对其应用 a 。我似乎找不到附加的方法app。使用 找到了一个按钮app.buttons[],但似乎没有app.VStack或 的等效项app.HStack。
另外,我尝试将此代码转换为将 包装VStack在 a 中Button,但由于某种原因,这覆盖了我的图像,扭曲了首选行为。
VStack使用我正在使用的完整代码片段进行更新:
VStack(alignment: .leading, spacing: 0) {
ZStack {
if self.create_event_vm.everyone_toggle == true {
Image("loginBackground")
.resizable()
.accessibility(identifier: "everyone_toggle_background")
}
HStack {
VStack(alignment: .leading, spacing: 0) {
Text("Visible to everyone on …Run Code Online (Sandbox Code Playgroud) 我正在尝试利用包 drf-nested-routers 在我的 API 中创建嵌套路由。
我试图跟随文档(https://github.com/alanjds/drf-nested-routers)并阅读多个 Stackoverflow 线程,希望能找出这个问题。
我想创建一个 NestedSimpleRouter。这是我目前在 routers.py 文件中的内容:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from rest_framework_nested import routers
from api_v1.viewsets import DeviceViewSet, BreadcrumbViewSet
router = DefaultRouter()
router.register(r'devices', DeviceViewSet, base_name='devices')
device_breadcrumbs_router = routers.NestedSimpleRouter(router, r'breadcrumbs', lookup='breadcrumb')
device_breadcrumbs_router.register(r'breadcrumbs', BreadcrumbViewSet, base_name='breadcrumbs')
api_url_patterns = [
path('', include(router.urls)),
path('', include(device_breadcrumbs_router.urls)),
]
Run Code Online (Sandbox Code Playgroud)
然后我将 包含api_url_patterns在我的 urls.py 文件中:
from django.contrib import admin
from django.urls import path, include
from .routers import api_url_patterns
urlpatterns = [
path('api/v1/', include(api_url_patterns)),
path('admin/', admin.site.urls), …Run Code Online (Sandbox Code Playgroud) 我开始在编写 UI 测试的同时尝试使用 Swift,但在向文本字段中输入文本时遇到了问题。下面是代码:
func testLoginUsernameField() {
let app = XCUIApplication()
app.launch()
let username = "testusername2"
let usernameField = app.textFields["username_field"]
XCTAssertTrue(usernameField.exists)
usernameField.tap()
usernameField.typeText(username)
XCTAssertEqual(usernameField.value as! String, username)
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时就会出现问题usernameField.typeText(username)。我的文字继续写,tstusername2而不是testusername2.
我有一个函数可以调用来访问用户的联系信息。但是,我需要此功能来提示用户一个警报,如果授权状态被拒绝,该警报可以将他们重定向到其“设置”页面。
到目前为止,我的代码已成功提示用户输入联系信息。但是,如果案件最终被拒绝,我想运行该show_settings_alert函数,如下所示:
func requestContactPermissions(completion: @escaping (Bool) -> ()) {
let store = CNContactStore()
var authStatus = CNContactStore.authorizationStatus(for: .contacts)
switch authStatus {
case .denied:
show_settings_alert()
}
Run Code Online (Sandbox Code Playgroud)
这是show_settings_alert我在一些有关此问题的教程中找到的函数:
func show_settings_alert() {
let alertController = UIAlertController(title: "TITLE", message: "Please go to Settings and turn on the permissions", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in …Run Code Online (Sandbox Code Playgroud) 我的导航栏组件依赖于useRouter提供的功能nextjs/router来设置活动链接的样式。
我正在尝试使用 Cypress 测试这种行为,但我不确定应该如何组织它。赛普拉斯似乎不喜欢getRoutePathname(),并且在我的测试环境中返回了未定义。
这是我要测试的组件:
import Link from 'next/link'
import { useRouter } from 'next/router'
function getRoutePathname() {
const router = useRouter()
return router.pathname
}
const Navbar = props => {
const pathname = getRoutePathname()
return (
<nav>
<div className="mr-auto">
<h1>Cody Bontecou</h1>
</div>
{props.links.map(link => (
<Link key={link.to} href={link.to}>
<a
className={`border-transparent border-b-2 hover:border-blue-ninja
${pathname === link.to ? 'border-blue-ninja' : ''}`}
>
{link.text}
</a>
</Link>
))}
</nav>
)
}
export default Navbar
Run Code Online (Sandbox Code Playgroud)
我有 Cypress 组件测试运行程序的骨架设置,并且在硬编码时能够加载组件 …
当我在 HStack 中并尝试在 Text 和 Textfield 视图之间创建空间时,我似乎无法使用 Spacer() 函数。间隔器用于间隔视图的其他区域,但每当我尝试在这两个元素之间间隔时,它就不起作用。
这是我正在使用的代码:
VStack(alignment: .leading, spacing: 0) {
Rectangle()
.frame(height: 2, alignment: .top)
.foregroundColor(Color("grey2"))
Text("Tickets")
.kerning(0.5)
.scaledFont(name: "Gotham Medium", size: 18)
.foregroundColor(Color("grey4"))
.padding(.horizontal)
.padding(.bottom, 3)
.padding(.top, 35)
Rectangle()
.frame(height: 2, alignment: .top)
.foregroundColor(Color("grey2"))
HStack {
Text("Ticket URL")
.kerning(0.5)
.scaledFont(name: "Gotham Book", size: 16)
.foregroundColor(Color("spaceblack"))
Spacer()
TextField("Enter URL", text: $url)
}
.background(Color.blue)
.padding()
Rectangle()
.frame(height: 2, alignment: .top)
.foregroundColor(Color("grey2"))
}
.frame(maxWidth: .infinity)
.background(Color.red)
Run Code Online (Sandbox Code Playgroud) swiftui ×3
swift ×2
xctest ×2
cypress ×1
cypress-component-test-runner ×1
next.js ×1
uikit ×1
xctestcase ×1
xcuitest ×1