在过去的几个月里,我一直在使用JavaScript并使用SinonJS来存储某些行为.我已经设法使它工作,我已经存在许多方法,一切都很好.
但我仍然对Sinon如何在桌面下工作有一些疑问.我想我说的是Sinon,但是这个问题可能适用于所有其他用于模拟/存根/间谍的库.
我过去几年最常用的语言是Java.在Java中,我使用Mockito来模拟/存根依赖项和依赖项注入.我以前导入了Class,用@Mock该元素注释并将这个模拟作为param传递给被测试的类.我很容易看到我在做什么:嘲笑一个类并将模拟作为参数传递.
当我第一次开始使用SinonJS时,我看到了这样的事情:
moduleUnderTest.spec.js
const request = require('request')
describe('Some tests', () => {
let requestStub
beforeEach(() => {
requestStub = sinon.stub(request, 'get')
})
afterEach(() => {
request.get.restore()
})
it('A test case', (done) => {
const err = undefined
const res = { statusCode: 200 }
const body = undefined
requestStub
.withArgs("some_url")
.yields(err, res, body)
const moduleUnderTest = moduleUnderTest.someFunction()
// some assertions
})
})
Run Code Online (Sandbox Code Playgroud)
moduleUnderTest.js
const request = require('request')
// some code
request
.get("some_url", requestParams, onResponse)
Run Code Online (Sandbox Code Playgroud)
它有效.当我们运行测试时,实现request …
我正在消耗两个JSON.
第一个将ID作为String.
"details": {
"id": "316.0"
}
Run Code Online (Sandbox Code Playgroud)
另一个的ID为Integer.
"details": {
"detailId": 316
}
Run Code Online (Sandbox Code Playgroud)
两个JSON都使用FasterXML映射到两个不同的类.我希望两个ID都是整数.现在他们是String.
如何强制ForceXML将"316.0"转换为Integer,以便轻松比较这两个属性?
我想创建一个注释作为JUnit类别的语法糖.
我想要实现的目标:
@Test
public void shouldDoSomeTesting() { ... }
@Wip
@Test
public void shouldBeATestWithWorkInProgress { ... }
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西(Wip.class):
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Category(Wip.class)
public @interface Wip {}
Run Code Online (Sandbox Code Playgroud)
但它没有用.如果我这样做,它的工作原理:
@Category(Wip.class)
@Test
public void shouldBeATestWithWorkInProgress { ... }
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果是的话,我在界面上做错了什么?
我正在使用一个端点(我不拥有并且无法修复),并且该端点返回JSON。
问题在于此JSON可以采用不同的格式:
格式1:
{
"message": "Message"
}
Run Code Online (Sandbox Code Playgroud)
要么
{
"message": ["ERROR_CODE"]
}
Run Code Online (Sandbox Code Playgroud)
取决于发生了什么。
我希望有一个结构来保存此响应,以便稍后可以检查messagea是字符串还是数组,并正确遵循流程。
在Go中可以做到吗?我认为的第一种方法是具有两个结构,并尝试使用解码string,如果发生错误,请尝试使用解码array。
有没有更优雅的方法?
java ×2
json ×2
annotations ×1
decode ×1
fasterxml ×1
go ×1
jackson ×1
javascript ×1
junit ×1
mocking ×1
sinon ×1
stub ×1
unit-testing ×1