Mock如何利用正则匹配url上的params

将正则表达式直接写在mock里

Mock拦截Ajax的函数如下:

Mock.mock(rurl, method, function)

已知 rurl 可以直接使用正则表达式,那么不妨碍直接把正则表达式写在 rurl 里,即如下:

Mock.mock(/http:\/\/localhost:3000\/ywcklb\/getData(|\?\s*)/, "get", getYwkcById);

这样可以拦截以下两种链接

// 第一种

http://localhost:3000/ywkclb/getData

// 第二种

http://localhost:3000/ywkclb/getData?{…params}

因此,需要注意,如果有同时有第一种和第二种链接要拦截,需要将有正则表达式的放在最后,避免它把第一种链接覆盖,即如下顺序:

Mock.mock("http://localhost:3000/ywcklb/getData", "get", getYwkclb);
Mock.mock(/http:\/\/localhost:3000\/ywcklb\/getData(|\?\s*)/, "get", getYwkcById);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单元测试是一种软件测试方法,用于测试应用程序的各个部分是否按照预期进行工作。在 Golang 中,我们可以使用 Mock 对象来编写单元测试,Mock 对象可以模拟应用程序的行为,以便进行测试。 以下是使用 Golang 编写 Mock 单元测试的步骤: 1. 安装 Mock 库 在 Golang 中,我们可以使用各种 Mock 库,例如 GoMockMockery 等。在本例中,我们将使用 GoMock 库。请使用以下命令安装 GoMock: ``` go get github.com/golang/mock/gomock ``` 2. 创建 Mock 对象 在 Golang 中,我们可以使用 Mock 对象来模拟应用程序的行为。我们可以使用 GoMock 库来创建 Mock 对象。以下是一个示例: ``` // mock_test.go package main import ( "testing" "github.com/golang/mock/gomock" ) type MockDatabase struct { mock.Mock } func (m *MockDatabase) GetUser(id int) (string, error) { args := m.Called(id) return args.String(0), args.Error(1) } ``` 在上面的示例中,我们创建了一个名为 `MockDatabase` 的结构体,该结构体包含一个 `mock.Mock` 字段。我们还定义了一个 `GetUser` 方法,该方法接受一个 `id` 参数,并返回一个字符串和一个错误。在该方法中,我们使用 `m.Called` 方法来模拟一个函数调用,并返回模拟的结果。 3. 编写测试用例 编写测试用例时,我们可以使用 `gomock.NewController` 方法来创建一个 Mock 控制器,并使用 `controller.Finish` 方法来释放资源。以下是一个示例: ``` // main_test.go package main import ( "testing" "github.com/golang/mock/gomock" ) func TestGetUser(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() mockDatabase := NewMockDatabase(ctrl) mockDatabase.EXPECT().GetUser(1).Return("Alice", nil) app := App{ Database: mockDatabase, } user, err := app.GetUser(1) if err != nil { t.Errorf("Unexpected error: %v", err) } if user != "Alice" { t.Errorf("Expected user to be Alice, but got %v", user) } } ``` 在上面的示例中,我们创建了一个名为 `TestGetUser` 的测试用例。在该测试用例中,我们使用 `gomock.NewController` 方法创建了一个 Mock 控制器,并使用 `ctrl.Finish` 方法释放资源。我们还创建了一个名为 `mockDatabase` 的 Mock 对象,并使用 `mockDatabase.EXPECT().GetUser(1).Return("Alice", nil)` 方法来模拟 `GetUser` 方法的行为。最后,我们使用模拟的 `Database` 对象创建了一个 `App` 对象,并调用 `GetUser` 方法进行测试。 总结 在 Golang 中,我们可以使用 Mock 对象来编写单元测试。使用 Mock 对象可以模拟应用程序的行为,以便进行测试。在本文中,我们介绍了使用 GoMock 库编写 Mock 单元测试的步骤,并提供了示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值