Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error: product 'OHHTTPStubsSwift' required by package not found. Did you mean 'OHHTTPStubsSwift'? #369

Open
6 of 9 tasks
komyg opened this issue Mar 26, 2024 · 1 comment

Comments

@komyg
Copy link

komyg commented Mar 26, 2024

New Issue Checklist

Environment

  • version of OHHTTPStubs: 9.1.0
  • integration method you are using:
    • Cocoapods
    • Carthage
    • submodule
    • other
  • version of the tool you use: Swift Package Manager: 5.9

Issue Description

Hi, I am trying to use OHHHTTPStubs in my tests, but they are failing.

Since I am using the Swift Package Manager, I've added OHHTTPStubs as a dependency:

// swift-tools-version: 5.9
import PackageDescription

let package = Package(
  name: "Sdk",
  platforms: [.macOS(.v14), .iOS(.v15)],
  products: [
    .library(
      name: "Sdk",
      targets: ["Sdk"]),
    .executable(
      name: "Example",
      targets: ["SdkExample"]
    ),
  ],
  dependencies: [
    .package(
      url: "https://github.com/AliSoftware/OHHTTPStubs.git", from: "9.0.0"
    )
  ],
  targets: [
    .target(
      name: "Sdk", dependencies: ["Org", "Api"]),
    .executableTarget(
      name: "SdkExample", dependencies: ["Sdk"]
    ),
    .testTarget(
      name: "SdkTests",
      dependencies: ["Sdk", "OHHTTPStubs", "OHHTTPStubsSwift"]),
    .target(name: "Org", dependencies: ["SdkInternal", "Shared"]),
    .target(name: "Api", dependencies: ["SdkInternal", "Shared"]),
    .target(name: "Shared", dependencies: ["SdkInternal"]),
    .target(name: "SdkInternal", dependencies: []),
  ]
)

Then I created a very basic test:

import Foundation
import OHHTTPStubs
import XCTest

@testable import Sdk
@testable import Shared

final class SdkTests: XCTestCase {
  func testExample() async throws {
    stub(condition: isHost("my-api.com")) { _ in
      let stubData = """
        {
          "id": 1,
        }
        """.data(using: .utf8)!
      return OHHTTPStubsResponse(statusCode: 200)
    }

    let sdk = Sdk(baseUrl: "http://my-api.com")

    var params = SdkRequestParams()
    params.headers["Authorization"] = "Bearer token"

    let getByIdResult = try await sdk.org.getById(id: "1", params: params)
    XCTAssertEqual(getByIdResult.metadata.statusCode, 200)
  }
}

However, when I try to run it, I get this error:

error: 'sdk': product 'OHHTTPStubsSwift' required by package 'sdk' target 'SdkTests' not found. Did you mean 'OHHTTPStubsSwift'?

If I remove the import OHHTTPStubsSwift, I get these errors:

error: cannot find 'stub' in scope
    stub(condition: isHost("my-api.com")) { _ in
    ^~~~
error: cannot find 'isHost' in scope
    stub(condition: isHost("my-api.com")) { _ in
                    ^~~~~~
error: cannot find 'OHHTTPStubsResponse' in scope
      return OHHTTPStubsResponse(statusCode: 200)
             ^~~~~~~~~~~~~~~~~~~
error: fatalError

error: fatalError

I am new to Swift. Could you help me?

@leoromanovsky
Copy link

In Package.swift:

.testTarget(
            name: "SdkTests",
            dependencies: [
                "Sdk",
                .product(name: "OHHTTPStubs", package: "OHHTTPStubs"),
                .product(name: "OHHTTPStubsSwift", package: "OHHTTPStubs")
            ]
        )

in your unit test:

import OHHTTPStubs
import OHHTTPStubsSwift

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants