gpt4 book ai didi

mocking - Nightwatch 模拟 HTTP 请求

转载 作者:行者123 更新时间:2023-12-02 15:25:10 27 4
gpt4 key购买 nike

我尝试使用 nock 和 sinonjs 等其他库来模拟 HTTP 请求,但没有成功。

import nock from "nock"

const URL = "http://localhost:8080/"

const SIGN_IN_PATH = "/fake/users/sign_in.json"

export const signInRequest = (status, payload = {}) => {
return nock(URL).get(SIGN_IN_PATH).reply(status, payload)
}

-

import { signInRequest } from "./../../utils/fakeRequests"

const doLogin = (browser) => {
return browser
.url("http://localhost:8080")
.waitForElementVisible('form', 1000)
.setValue('input[name=email]', 'foo@foo.com')
.setValue('input[name=password]', 'somepass')
.click('button[type=submit]')
.pause(500)
}

export default {
"Do login and shows error message": (browser) => {
signInRequest(403)

doLogin(browser)
.waitForElementVisible('.error', 1000)
.end()
}
}

是否可以使用 nightwatch 进行模拟 http 请求?

最佳答案

Nightwatch.js 是一个端到端测试工具 - 所以重点是实际的 UI 以及它们调用的 api 将是实时的(而不是模拟的)因此,也许您正在寻找一个专为集成测试而设计的框架,例如 casper.js ( http://casperjs.org/ ) 或 nightmare ( https://github.com/segmentio/nightmare )

但是我相信在nightwatch中模拟http调用应该可以使用nock(如果你有一些奇怪的用例来保证它)确保您的 nock http 调用位于测试之前(它们甚至可以位于 before block 中),例如:

module.exports = {
'test abc' : function (browser) {
nock('http://example.com')
.get('/users')
.query({name: 'martin'})
.reply(200, {results: [{id: '123'}]});

// do test stuff
},
};

您的示例可能存在的问题是您模拟整个 UI - nightwatch 可能会以某种方式阻止同一域被拦截。将 UI 和 API 放在不同的域(或端口)上可能会解决问题

关于mocking - Nightwatch 模拟 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38404013/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com