luis-mocker
Version:
Http mocking for Luis.ai
37 lines (34 loc) • 1.84 kB
Markdown
# Luis Mocker [](https://circleci.com/gh/microsoftly/luis-mocker)
Easy http mocking of luis.ai. Perfect for testing services that rely on Luis.ai by making them deterministic and avoiding pay per call requests.
This is a work in progress. PRs are welcome!
# installation
```npm install -save luis-mocker```
# Classes
## LuisMocker
### ```constructor(luisModelUrl)```
### ```mock(utterance, responseBody)```
* mock utterance is the string that is expected.
* responseBody is the response sent back when that utterance is checked. Bodies can be easily built with the [LuisResponseBuilder](github.com/microsoftly/luis-response-builder)
# example use
``` javascript
const Promise = require("bluebird");
const chai = require("chai");
const { DateTimeV2, LuisResponseBuilder } = require("luis-response-builder");
const rp = require("request-promise");
const LuisMocker = require("./../src/LuisMocker");
describe('LuisMocker', () => {
const july15AmbiguousDateEntity = DateTimeV2.createDateTimeV2_Date_EntityWithAmbiguousDate('July 15th', 0, 4, new Date('7/19'), new Date('2015'));
const cancelTacoBellResponse = new LuisResponseBuilder('I want to cancel my reservation at Taco Bell on July 15th')
.addCustomEntity({ startIndex: 0, endIndex: 4, type: 'restaurantName', entity: 'taco bell', score: .98 })
.addPrebuiltEntity(july15AmbiguousDateEntity)
.addIntent('cancel', .92)
.addIntent('login', .3)
.addIntent('none', .02)
.build();
it('can mock requests to luis.ai', () => {
return rp.get(cancelTacoBellUri, { json: true })
.then((cancelTacoBellTestResponse) => {
chai.expect(cancelTacoBellTestResponse).to.deep.equal(cancelTacoBellResponse);
})
});
```