Bru*_*sma 6 mocking nightwatch.js nock
我尝试使用nock和其他libs(如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)
}
Run Code Online (Sandbox Code Playgroud)
-
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()
}
}
Run Code Online (Sandbox Code Playgroud)
它可能用夜视仪模拟http请求?
Nightwatch.js是一个端到端测试工具-关键是实际的UI以及它们调用的api将是实时的(而不是模拟的),因此,也许您正在寻找一种设计用于集成测试的框架,例如casper.js(http:// casperjs。 org /)或nightmare(https://github.com/segmentio/nightmare)
但是我相信模拟http调用nightwatch应该是可行的nock(如果您有一些奇怪的用例可以保证这一点),请确保您在测试之前没有http调用(它们甚至可能处于before阻塞状态),例如:
module.exports = {
'test abc' : function (browser) {
nock('http://example.com')
.get('/users')
.query({name: 'martin'})
.reply(200, {results: [{id: '123'}]});
// do test stuff
},
};
Run Code Online (Sandbox Code Playgroud)
您的示例可能存在的问题是,您在模拟整个用户界面- nightwatch可能以某种方式阻止了同一域的被拦截。将您的UI和API放在不同的域(或端口)上可能会解决此问题
| 归档时间: |
|
| 查看次数: |
2389 次 |
| 最近记录: |